/*** Autogenerated by WIDL 11.8 from ../wine/include/hlink.idl - Do not edit ***/

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

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

#ifndef __hlink_h__
#define __hlink_h__

/* Forward declarations */

#ifndef __IHlink_FWD_DEFINED__
#define __IHlink_FWD_DEFINED__
typedef interface IHlink IHlink;
#ifdef __cplusplus
interface IHlink;
#endif /* __cplusplus */
#endif

#ifndef __IHlinkSite_FWD_DEFINED__
#define __IHlinkSite_FWD_DEFINED__
typedef interface IHlinkSite IHlinkSite;
#ifdef __cplusplus
interface IHlinkSite;
#endif /* __cplusplus */
#endif

#ifndef __IEnumHLITEM_FWD_DEFINED__
#define __IEnumHLITEM_FWD_DEFINED__
typedef interface IEnumHLITEM IEnumHLITEM;
#ifdef __cplusplus
interface IEnumHLITEM;
#endif /* __cplusplus */
#endif

#ifndef __IHlinkBrowseContext_FWD_DEFINED__
#define __IHlinkBrowseContext_FWD_DEFINED__
typedef interface IHlinkBrowseContext IHlinkBrowseContext;
#ifdef __cplusplus
interface IHlinkBrowseContext;
#endif /* __cplusplus */
#endif

#ifndef __IHlinkTarget_FWD_DEFINED__
#define __IHlinkTarget_FWD_DEFINED__
typedef interface IHlinkTarget IHlinkTarget;
#ifdef __cplusplus
interface IHlinkTarget;
#endif /* __cplusplus */
#endif

#ifndef __IHlinkFrame_FWD_DEFINED__
#define __IHlinkFrame_FWD_DEFINED__
typedef interface IHlinkFrame IHlinkFrame;
#ifdef __cplusplus
interface IHlinkFrame;
#endif /* __cplusplus */
#endif

#ifndef __IExtensionServices_FWD_DEFINED__
#define __IExtensionServices_FWD_DEFINED__
typedef interface IExtensionServices IExtensionServices;
#ifdef __cplusplus
interface IExtensionServices;
#endif /* __cplusplus */
#endif

/* Headers for imported files */

#include <urlmon.h>

#ifdef __cplusplus
extern "C" {
#endif

#ifndef __IHlink_FWD_DEFINED__
#define __IHlink_FWD_DEFINED__
typedef interface IHlink IHlink;
#ifdef __cplusplus
interface IHlink;
#endif /* __cplusplus */
#endif

#ifndef __IHlinkSite_FWD_DEFINED__
#define __IHlinkSite_FWD_DEFINED__
typedef interface IHlinkSite IHlinkSite;
#ifdef __cplusplus
interface IHlinkSite;
#endif /* __cplusplus */
#endif

#ifndef __IHlinkFrame_FWD_DEFINED__
#define __IHlinkFrame_FWD_DEFINED__
typedef interface IHlinkFrame IHlinkFrame;
#ifdef __cplusplus
interface IHlinkFrame;
#endif /* __cplusplus */
#endif

#ifndef __IHlinkBrowseContext_FWD_DEFINED__
#define __IHlinkBrowseContext_FWD_DEFINED__
typedef interface IHlinkBrowseContext IHlinkBrowseContext;
#ifdef __cplusplus
interface IHlinkBrowseContext;
#endif /* __cplusplus */
#endif

HRESULT WINAPI HlinkCreateFromMoniker(IMoniker*, LPCWSTR, LPCWSTR, IHlinkSite*, DWORD, IUnknown*, REFIID, void**);
HRESULT WINAPI HlinkCreateFromString(LPCWSTR, LPCWSTR, LPCWSTR, IHlinkSite*, DWORD, IUnknown*, REFIID, void**);
HRESULT WINAPI HlinkCreateFromData(IDataObject*, IHlinkSite*, DWORD dwSiteData, IUnknown*, REFIID, void**);
HRESULT WINAPI HlinkCreateExtensionServices(LPCWSTR, HWND, LPCWSTR, LPCWSTR, IUnknown*, REFIID, void**);
HRESULT WINAPI HlinkQueryCreateFromData(IDataObject*);
HRESULT WINAPI HlinkClone(IHlink*, REFIID, IHlinkSite*, DWORD, void **);
HRESULT WINAPI HlinkCreateBrowseContext(IUnknown*, REFIID, void **);
HRESULT WINAPI HlinkNavigateToStringReference(LPCWSTR, LPCWSTR, IHlinkSite*, DWORD, IHlinkFrame*, DWORD, LPBC, IBindStatusCallback*, IHlinkBrowseContext*);
HRESULT WINAPI HlinkNavigate(IHlink*, IHlinkFrame*, DWORD, LPBC, IBindStatusCallback*, IHlinkBrowseContext*);
HRESULT WINAPI HlinkOnNavigate(IHlinkFrame*, IHlinkBrowseContext*, DWORD, IMoniker*, LPCWSTR, LPCWSTR, ULONG*);
HRESULT WINAPI HlinkIsShortcut(LPCWSTR);
HRESULT WINAPI HlinkTranslateURL(LPCWSTR,DWORD,LPWSTR*);
HRESULT WINAPI HlinkParseDisplayName(LPBC,LPCWSTR,BOOL,ULONG*,IMoniker**);
HRESULT WINAPI HlinkResolveMonikerForData(LPMONIKER,DWORD,LPBC,ULONG,FORMATETC*,IBindStatusCallback*,LPMONIKER);
HRESULT WINAPI HlinkUpdateStackItem(IHlinkFrame*, IHlinkBrowseContext*, ULONG, IMoniker*, LPCWSTR, LPCWSTR);
typedef enum _HLSR_NOREDEF10 {
    HLSR_HOME = 0,
    HLSR_SEARCHPAGE = 1,
    HLSR_HISTORYFOLDER = 2
} HLSR;
HRESULT WINAPI HlinkSetSpecialReference(ULONG uReference, LPCWSTR pwzReference);
HRESULT WINAPI HlinkGetSpecialReference(ULONG uReference, LPWSTR *ppwzReference);
#define SID_SHlinkFrame IID_IHlinkFrame
/*****************************************************************************
 * IHlink interface
 */
#ifndef __IHlink_INTERFACE_DEFINED__
#define __IHlink_INTERFACE_DEFINED__

typedef IHlink *LPHLINK;
typedef enum __WIDL_hlink_generated_name_0000001E {
    HLNF_INTERNALJUMP = 0x1,
    HLNF_OPENINNEWWINDOW = 0x2,
    HLNF_NAVIGATINGBACK = 0x4,
    HLNF_NAVIGATINGFORWARD = 0x8,
    HLNF_NAVIGATINGTOSTACKITEM = 0x10,
    HLNF_CREATENOHISTORY = 0x20
} HLNF;
typedef enum __WIDL_hlink_generated_name_0000001F {
    HLINKGETREF_DEFAULT = 0,
    HLINKGETREF_ABSOLUTE = 1,
    HLINKGETREF_RELATIVE = 2
} HLINKGETREF;
typedef enum __WIDL_hlink_generated_name_00000020 {
    HLFNAMEF_DEFAULT = 0x0,
    HLFNAMEF_TRYCACHE = 0x1,
    HLFNAMEF_TRYPRETTYTARGET = 0x2,
    HLFNAMEF_TRYFULLTARGET = 0x4,
    HLFNAMEF_TRYWIN95SHORTCUT = 0x8
} HLFNAMEF;
typedef enum __WIDL_hlink_generated_name_00000021 {
    HLINKMISC_RELATIVE = 0x1
} HLINKMISC;
typedef enum __WIDL_hlink_generated_name_00000022 {
    HLINKSETF_TARGET = 0x1,
    HLINKSETF_LOCATION = 0x2
} HLINKSETF;
DEFINE_GUID(IID_IHlink, 0x79eac9c3, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("79eac9c3-baf9-11ce-8c82-00aa004ba90b")
IHlink : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetHlinkSite(
        IHlinkSite *pihlSite,
        DWORD dwSiteData) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHlinkSite(
        IHlinkSite **ppihlSite,
        DWORD *pdwSiteData) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetMonikerReference(
        DWORD grfHLSETF,
        IMoniker *pimkTarget,
        LPCWSTR pwzLocation) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMonikerReference(
        DWORD dwWhichRef,
        IMoniker **ppimkTarget,
        LPWSTR *ppwzLocation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetStringReference(
        DWORD grfHLSETF,
        LPCWSTR pwzTarget,
        LPCWSTR pwzLocation) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStringReference(
        DWORD dwWhichRef,
        LPWSTR *ppwzTarget,
        LPWSTR *ppwzLocation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFriendlyName(
        LPCWSTR pwzFriendlyName) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFriendlyName(
        DWORD grfHLFNAMEF,
        LPWSTR *ppwzFriendlyName) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTargetFrameName(
        LPCWSTR pwzTargetFrameName) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTargetFrameName(
        LPWSTR *ppwzTargetFrameName) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMiscStatus(
        DWORD *pdwStatus) = 0;

    virtual HRESULT STDMETHODCALLTYPE Navigate(
        DWORD grfHLNF,
        LPBC pibc,
        IBindStatusCallback *pibsc,
        IHlinkBrowseContext *pihlbc) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAdditionalParams(
        LPCWSTR pwzAdditionalParams) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAdditionalParams(
        LPWSTR *ppwzAdditionalParams) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IHlink, 0x79eac9c3, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
#endif
#else
typedef struct IHlinkVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IHlink methods ***/
    HRESULT (STDMETHODCALLTYPE *SetHlinkSite)(
        IHlink *This,
        IHlinkSite *pihlSite,
        DWORD dwSiteData);

    HRESULT (STDMETHODCALLTYPE *GetHlinkSite)(
        IHlink *This,
        IHlinkSite **ppihlSite,
        DWORD *pdwSiteData);

    HRESULT (STDMETHODCALLTYPE *SetMonikerReference)(
        IHlink *This,
        DWORD grfHLSETF,
        IMoniker *pimkTarget,
        LPCWSTR pwzLocation);

    HRESULT (STDMETHODCALLTYPE *GetMonikerReference)(
        IHlink *This,
        DWORD dwWhichRef,
        IMoniker **ppimkTarget,
        LPWSTR *ppwzLocation);

    HRESULT (STDMETHODCALLTYPE *SetStringReference)(
        IHlink *This,
        DWORD grfHLSETF,
        LPCWSTR pwzTarget,
        LPCWSTR pwzLocation);

    HRESULT (STDMETHODCALLTYPE *GetStringReference)(
        IHlink *This,
        DWORD dwWhichRef,
        LPWSTR *ppwzTarget,
        LPWSTR *ppwzLocation);

    HRESULT (STDMETHODCALLTYPE *SetFriendlyName)(
        IHlink *This,
        LPCWSTR pwzFriendlyName);

    HRESULT (STDMETHODCALLTYPE *GetFriendlyName)(
        IHlink *This,
        DWORD grfHLFNAMEF,
        LPWSTR *ppwzFriendlyName);

    HRESULT (STDMETHODCALLTYPE *SetTargetFrameName)(
        IHlink *This,
        LPCWSTR pwzTargetFrameName);

    HRESULT (STDMETHODCALLTYPE *GetTargetFrameName)(
        IHlink *This,
        LPWSTR *ppwzTargetFrameName);

    HRESULT (STDMETHODCALLTYPE *GetMiscStatus)(
        IHlink *This,
        DWORD *pdwStatus);

    HRESULT (STDMETHODCALLTYPE *Navigate)(
        IHlink *This,
        DWORD grfHLNF,
        LPBC pibc,
        IBindStatusCallback *pibsc,
        IHlinkBrowseContext *pihlbc);

    HRESULT (STDMETHODCALLTYPE *SetAdditionalParams)(
        IHlink *This,
        LPCWSTR pwzAdditionalParams);

    HRESULT (STDMETHODCALLTYPE *GetAdditionalParams)(
        IHlink *This,
        LPWSTR *ppwzAdditionalParams);

    END_INTERFACE
} IHlinkVtbl;

interface IHlink {
    CONST_VTBL IHlinkVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IHlink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IHlink_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IHlink_Release(This) (This)->lpVtbl->Release(This)
/*** IHlink methods ***/
#define IHlink_SetHlinkSite(This,pihlSite,dwSiteData) (This)->lpVtbl->SetHlinkSite(This,pihlSite,dwSiteData)
#define IHlink_GetHlinkSite(This,ppihlSite,pdwSiteData) (This)->lpVtbl->GetHlinkSite(This,ppihlSite,pdwSiteData)
#define IHlink_SetMonikerReference(This,grfHLSETF,pimkTarget,pwzLocation) (This)->lpVtbl->SetMonikerReference(This,grfHLSETF,pimkTarget,pwzLocation)
#define IHlink_GetMonikerReference(This,dwWhichRef,ppimkTarget,ppwzLocation) (This)->lpVtbl->GetMonikerReference(This,dwWhichRef,ppimkTarget,ppwzLocation)
#define IHlink_SetStringReference(This,grfHLSETF,pwzTarget,pwzLocation) (This)->lpVtbl->SetStringReference(This,grfHLSETF,pwzTarget,pwzLocation)
#define IHlink_GetStringReference(This,dwWhichRef,ppwzTarget,ppwzLocation) (This)->lpVtbl->GetStringReference(This,dwWhichRef,ppwzTarget,ppwzLocation)
#define IHlink_SetFriendlyName(This,pwzFriendlyName) (This)->lpVtbl->SetFriendlyName(This,pwzFriendlyName)
#define IHlink_GetFriendlyName(This,grfHLFNAMEF,ppwzFriendlyName) (This)->lpVtbl->GetFriendlyName(This,grfHLFNAMEF,ppwzFriendlyName)
#define IHlink_SetTargetFrameName(This,pwzTargetFrameName) (This)->lpVtbl->SetTargetFrameName(This,pwzTargetFrameName)
#define IHlink_GetTargetFrameName(This,ppwzTargetFrameName) (This)->lpVtbl->GetTargetFrameName(This,ppwzTargetFrameName)
#define IHlink_GetMiscStatus(This,pdwStatus) (This)->lpVtbl->GetMiscStatus(This,pdwStatus)
#define IHlink_Navigate(This,grfHLNF,pibc,pibsc,pihlbc) (This)->lpVtbl->Navigate(This,grfHLNF,pibc,pibsc,pihlbc)
#define IHlink_SetAdditionalParams(This,pwzAdditionalParams) (This)->lpVtbl->SetAdditionalParams(This,pwzAdditionalParams)
#define IHlink_GetAdditionalParams(This,ppwzAdditionalParams) (This)->lpVtbl->GetAdditionalParams(This,ppwzAdditionalParams)
#else
/*** IUnknown methods ***/
static inline HRESULT IHlink_QueryInterface(IHlink* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IHlink_AddRef(IHlink* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IHlink_Release(IHlink* This) {
    return This->lpVtbl->Release(This);
}
/*** IHlink methods ***/
static inline HRESULT IHlink_SetHlinkSite(IHlink* This,IHlinkSite *pihlSite,DWORD dwSiteData) {
    return This->lpVtbl->SetHlinkSite(This,pihlSite,dwSiteData);
}
static inline HRESULT IHlink_GetHlinkSite(IHlink* This,IHlinkSite **ppihlSite,DWORD *pdwSiteData) {
    return This->lpVtbl->GetHlinkSite(This,ppihlSite,pdwSiteData);
}
static inline HRESULT IHlink_SetMonikerReference(IHlink* This,DWORD grfHLSETF,IMoniker *pimkTarget,LPCWSTR pwzLocation) {
    return This->lpVtbl->SetMonikerReference(This,grfHLSETF,pimkTarget,pwzLocation);
}
static inline HRESULT IHlink_GetMonikerReference(IHlink* This,DWORD dwWhichRef,IMoniker **ppimkTarget,LPWSTR *ppwzLocation) {
    return This->lpVtbl->GetMonikerReference(This,dwWhichRef,ppimkTarget,ppwzLocation);
}
static inline HRESULT IHlink_SetStringReference(IHlink* This,DWORD grfHLSETF,LPCWSTR pwzTarget,LPCWSTR pwzLocation) {
    return This->lpVtbl->SetStringReference(This,grfHLSETF,pwzTarget,pwzLocation);
}
static inline HRESULT IHlink_GetStringReference(IHlink* This,DWORD dwWhichRef,LPWSTR *ppwzTarget,LPWSTR *ppwzLocation) {
    return This->lpVtbl->GetStringReference(This,dwWhichRef,ppwzTarget,ppwzLocation);
}
static inline HRESULT IHlink_SetFriendlyName(IHlink* This,LPCWSTR pwzFriendlyName) {
    return This->lpVtbl->SetFriendlyName(This,pwzFriendlyName);
}
static inline HRESULT IHlink_GetFriendlyName(IHlink* This,DWORD grfHLFNAMEF,LPWSTR *ppwzFriendlyName) {
    return This->lpVtbl->GetFriendlyName(This,grfHLFNAMEF,ppwzFriendlyName);
}
static inline HRESULT IHlink_SetTargetFrameName(IHlink* This,LPCWSTR pwzTargetFrameName) {
    return This->lpVtbl->SetTargetFrameName(This,pwzTargetFrameName);
}
static inline HRESULT IHlink_GetTargetFrameName(IHlink* This,LPWSTR *ppwzTargetFrameName) {
    return This->lpVtbl->GetTargetFrameName(This,ppwzTargetFrameName);
}
static inline HRESULT IHlink_GetMiscStatus(IHlink* This,DWORD *pdwStatus) {
    return This->lpVtbl->GetMiscStatus(This,pdwStatus);
}
static inline HRESULT IHlink_Navigate(IHlink* This,DWORD grfHLNF,LPBC pibc,IBindStatusCallback *pibsc,IHlinkBrowseContext *pihlbc) {
    return This->lpVtbl->Navigate(This,grfHLNF,pibc,pibsc,pihlbc);
}
static inline HRESULT IHlink_SetAdditionalParams(IHlink* This,LPCWSTR pwzAdditionalParams) {
    return This->lpVtbl->SetAdditionalParams(This,pwzAdditionalParams);
}
static inline HRESULT IHlink_GetAdditionalParams(IHlink* This,LPWSTR *ppwzAdditionalParams) {
    return This->lpVtbl->GetAdditionalParams(This,ppwzAdditionalParams);
}
#endif
#endif

#endif


#endif  /* __IHlink_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IHlinkSite interface
 */
#ifndef __IHlinkSite_INTERFACE_DEFINED__
#define __IHlinkSite_INTERFACE_DEFINED__

typedef IHlinkSite *LPHLINKSITE;
typedef enum __WIDL_hlink_generated_name_00000023 {
    HLINKWHICHMK_CONTAINER = 1,
    HLINKWHICHMK_BASE = 2
} HLINKWHICHMK;
DEFINE_GUID(IID_IHlinkSite, 0x79eac9c2, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("79eac9c2-baf9-11ce-8c82-00aa004ba90b")
IHlinkSite : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE QueryService(
        DWORD dwSiteData,
        REFGUID guidService,
        REFIID riid,
        IUnknown **ppiunk) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMoniker(
        DWORD dwSiteData,
        DWORD dwAssign,
        DWORD dwWhich,
        IMoniker **ppimk) = 0;

    virtual HRESULT STDMETHODCALLTYPE ReadyToNavigate(
        DWORD dwSiteData,
        DWORD dwReserved) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnNavigationComplete(
        DWORD dwSiteData,
        DWORD dwreserved,
        HRESULT hrError,
        LPCWSTR pwzError) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IHlinkSite, 0x79eac9c2, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
#endif
#else
typedef struct IHlinkSiteVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IHlinkSite methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryService)(
        IHlinkSite *This,
        DWORD dwSiteData,
        REFGUID guidService,
        REFIID riid,
        IUnknown **ppiunk);

    HRESULT (STDMETHODCALLTYPE *GetMoniker)(
        IHlinkSite *This,
        DWORD dwSiteData,
        DWORD dwAssign,
        DWORD dwWhich,
        IMoniker **ppimk);

    HRESULT (STDMETHODCALLTYPE *ReadyToNavigate)(
        IHlinkSite *This,
        DWORD dwSiteData,
        DWORD dwReserved);

    HRESULT (STDMETHODCALLTYPE *OnNavigationComplete)(
        IHlinkSite *This,
        DWORD dwSiteData,
        DWORD dwreserved,
        HRESULT hrError,
        LPCWSTR pwzError);

    END_INTERFACE
} IHlinkSiteVtbl;

interface IHlinkSite {
    CONST_VTBL IHlinkSiteVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IHlinkSite_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IHlinkSite_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IHlinkSite_Release(This) (This)->lpVtbl->Release(This)
/*** IHlinkSite methods ***/
#define IHlinkSite_QueryService(This,dwSiteData,guidService,riid,ppiunk) (This)->lpVtbl->QueryService(This,dwSiteData,guidService,riid,ppiunk)
#define IHlinkSite_GetMoniker(This,dwSiteData,dwAssign,dwWhich,ppimk) (This)->lpVtbl->GetMoniker(This,dwSiteData,dwAssign,dwWhich,ppimk)
#define IHlinkSite_ReadyToNavigate(This,dwSiteData,dwReserved) (This)->lpVtbl->ReadyToNavigate(This,dwSiteData,dwReserved)
#define IHlinkSite_OnNavigationComplete(This,dwSiteData,dwreserved,hrError,pwzError) (This)->lpVtbl->OnNavigationComplete(This,dwSiteData,dwreserved,hrError,pwzError)
#else
/*** IUnknown methods ***/
static inline HRESULT IHlinkSite_QueryInterface(IHlinkSite* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IHlinkSite_AddRef(IHlinkSite* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IHlinkSite_Release(IHlinkSite* This) {
    return This->lpVtbl->Release(This);
}
/*** IHlinkSite methods ***/
static inline HRESULT IHlinkSite_QueryService(IHlinkSite* This,DWORD dwSiteData,REFGUID guidService,REFIID riid,IUnknown **ppiunk) {
    return This->lpVtbl->QueryService(This,dwSiteData,guidService,riid,ppiunk);
}
static inline HRESULT IHlinkSite_GetMoniker(IHlinkSite* This,DWORD dwSiteData,DWORD dwAssign,DWORD dwWhich,IMoniker **ppimk) {
    return This->lpVtbl->GetMoniker(This,dwSiteData,dwAssign,dwWhich,ppimk);
}
static inline HRESULT IHlinkSite_ReadyToNavigate(IHlinkSite* This,DWORD dwSiteData,DWORD dwReserved) {
    return This->lpVtbl->ReadyToNavigate(This,dwSiteData,dwReserved);
}
static inline HRESULT IHlinkSite_OnNavigationComplete(IHlinkSite* This,DWORD dwSiteData,DWORD dwreserved,HRESULT hrError,LPCWSTR pwzError) {
    return This->lpVtbl->OnNavigationComplete(This,dwSiteData,dwreserved,hrError,pwzError);
}
#endif
#endif

#endif


#endif  /* __IHlinkSite_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IEnumHLITEM interface
 */
#ifndef __IEnumHLITEM_INTERFACE_DEFINED__
#define __IEnumHLITEM_INTERFACE_DEFINED__

typedef IEnumHLITEM *LPENUMHLITEM;
typedef struct tagHLITEM {
    ULONG uHLID;
    LPWSTR pwzFriendlyName;
} HLITEM;
typedef HLITEM *LPHLITEM;
DEFINE_GUID(IID_IEnumHLITEM, 0x79eac9c6, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("79eac9c6-baf9-11ce-8c82-00aa004ba90b")
IEnumHLITEM : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG celt,
        HLITEM *rgelt,
        ULONG *pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        ULONG celt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        IEnumHLITEM **ppienumhlitem) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IEnumHLITEM, 0x79eac9c6, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
#endif
#else
typedef struct IEnumHLITEMVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IEnumHLITEM methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        IEnumHLITEM *This,
        ULONG celt,
        HLITEM *rgelt,
        ULONG *pceltFetched);

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

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

    HRESULT (STDMETHODCALLTYPE *Clone)(
        IEnumHLITEM *This,
        IEnumHLITEM **ppienumhlitem);

    END_INTERFACE
} IEnumHLITEMVtbl;

interface IEnumHLITEM {
    CONST_VTBL IEnumHLITEMVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IEnumHLITEM_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumHLITEM_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumHLITEM_Release(This) (This)->lpVtbl->Release(This)
/*** IEnumHLITEM methods ***/
#define IEnumHLITEM_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
#define IEnumHLITEM_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define IEnumHLITEM_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumHLITEM_Clone(This,ppienumhlitem) (This)->lpVtbl->Clone(This,ppienumhlitem)
#else
/*** IUnknown methods ***/
static inline HRESULT IEnumHLITEM_QueryInterface(IEnumHLITEM* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IEnumHLITEM_AddRef(IEnumHLITEM* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IEnumHLITEM_Release(IEnumHLITEM* This) {
    return This->lpVtbl->Release(This);
}
/*** IEnumHLITEM methods ***/
static inline HRESULT IEnumHLITEM_Next(IEnumHLITEM* This,ULONG celt,HLITEM *rgelt,ULONG *pceltFetched) {
    return This->lpVtbl->Next(This,celt,rgelt,pceltFetched);
}
static inline HRESULT IEnumHLITEM_Skip(IEnumHLITEM* This,ULONG celt) {
    return This->lpVtbl->Skip(This,celt);
}
static inline HRESULT IEnumHLITEM_Reset(IEnumHLITEM* This) {
    return This->lpVtbl->Reset(This);
}
static inline HRESULT IEnumHLITEM_Clone(IEnumHLITEM* This,IEnumHLITEM **ppienumhlitem) {
    return This->lpVtbl->Clone(This,ppienumhlitem);
}
#endif
#endif

#endif


#endif  /* __IEnumHLITEM_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IHlinkBrowseContext interface
 */
#ifndef __IHlinkBrowseContext_INTERFACE_DEFINED__
#define __IHlinkBrowseContext_INTERFACE_DEFINED__

typedef IHlinkBrowseContext *LPHLINKBROWSECONTEXT;
enum {
    HLTB_DOCKEDLEFT = 0,
    HLTB_DOCKEDTOP = 1,
    HLTB_DOCKEDRIGHT = 2,
    HLTB_DOCKEDBOTTOM = 3,
    HLTB_FLOATING = 4
};
typedef struct _tagHLTBINFO {
    ULONG uDockType;
    RECT rcTbPos;
} HLTBINFO;
enum {
    HLBWIF_HASFRAMEWNDINFO = 0x1,
    HLBWIF_HASDOCWNDINFO = 0x2,
    HLBWIF_FRAMEWNDMAXIMIZED = 0x4,
    HLBWIF_DOCWNDMAXIMIZED = 0x8,
    HLBWIF_HASWEBTOOLBARINFO = 0x10,
    HLBWIF_WEBTOOLBARHIDDEN = 0x20
};
typedef struct _tagHLBWINFO {
    ULONG cbSize;
    DWORD grfHLBWIF;
    RECT rcFramePos;
    RECT rcDocPos;
    HLTBINFO hltbinfo;
} HLBWINFO;
typedef HLBWINFO *LPHLBWINFO;
enum {
    HLID_INVALID = 0x0,
    HLID_PREVIOUS = 0xffffffff,
    HLID_NEXT = 0xfffffffe,
    HLID_CURRENT = 0xfffffffd,
    HLID_STACKBOTTOM = 0xfffffffc,
    HLID_STACKTOP = 0xfffffffb
};
enum {
    HLQF_ISVALID = 0x1,
    HLQF_ISCURRENT = 0x2
};
#ifdef WINE_NO_UNICODE_MACROS
#undef GetObject
#endif
DEFINE_GUID(IID_IHlinkBrowseContext, 0x79eac9c7, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("79eac9c7-baf9-11ce-8c82-00aa004ba90b")
IHlinkBrowseContext : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Register(
        DWORD reserved,
        IUnknown *piunk,
        IMoniker *pimk,
        DWORD *pdwRegister) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetObject(
        IMoniker *pimk,
        BOOL fBindIfRootRegistered,
        IUnknown **ppiunk) = 0;

    virtual HRESULT STDMETHODCALLTYPE Revoke(
        DWORD dwRegister) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetBrowseWindowInfo(
        HLBWINFO *phlbwi) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBrowseWindowInfo(
        HLBWINFO *phlbwi) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetInitialHlink(
        IMoniker *pimkTarget,
        LPCWSTR pwzLocation,
        LPCWSTR pwzFriendlyName) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnNavigateHlink(
        DWORD grfHLNF,
        IMoniker *pimkTarget,
        LPCWSTR pwzLocation,
        LPCWSTR pwzFriendlyName,
        ULONG *puHLID) = 0;

    virtual HRESULT STDMETHODCALLTYPE UpdateHlink(
        ULONG uHLID,
        IMoniker *pimkTarget,
        LPCWSTR pwzLocation,
        LPCWSTR pwzFriendlyName) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumNavigationStack(
        DWORD dwReserved,
        DWORD grfHLFNAMEF,
        IEnumHLITEM **ppienumhlitem) = 0;

    virtual HRESULT STDMETHODCALLTYPE QueryHlink(
        DWORD grfHLQF,
        ULONG uHLID) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHlink(
        ULONG uHLID,
        IHlink **ppihl) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCurrentHlink(
        ULONG uHLID) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        IUnknown *piunkOuter,
        REFIID riid,
        IUnknown **ppiunkObj) = 0;

    virtual HRESULT STDMETHODCALLTYPE Close(
        DWORD reserved) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IHlinkBrowseContext, 0x79eac9c7, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
#endif
#else
typedef struct IHlinkBrowseContextVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IHlinkBrowseContext methods ***/
    HRESULT (STDMETHODCALLTYPE *Register)(
        IHlinkBrowseContext *This,
        DWORD reserved,
        IUnknown *piunk,
        IMoniker *pimk,
        DWORD *pdwRegister);

    HRESULT (STDMETHODCALLTYPE *GetObject)(
        IHlinkBrowseContext *This,
        IMoniker *pimk,
        BOOL fBindIfRootRegistered,
        IUnknown **ppiunk);

    HRESULT (STDMETHODCALLTYPE *Revoke)(
        IHlinkBrowseContext *This,
        DWORD dwRegister);

    HRESULT (STDMETHODCALLTYPE *SetBrowseWindowInfo)(
        IHlinkBrowseContext *This,
        HLBWINFO *phlbwi);

    HRESULT (STDMETHODCALLTYPE *GetBrowseWindowInfo)(
        IHlinkBrowseContext *This,
        HLBWINFO *phlbwi);

    HRESULT (STDMETHODCALLTYPE *SetInitialHlink)(
        IHlinkBrowseContext *This,
        IMoniker *pimkTarget,
        LPCWSTR pwzLocation,
        LPCWSTR pwzFriendlyName);

    HRESULT (STDMETHODCALLTYPE *OnNavigateHlink)(
        IHlinkBrowseContext *This,
        DWORD grfHLNF,
        IMoniker *pimkTarget,
        LPCWSTR pwzLocation,
        LPCWSTR pwzFriendlyName,
        ULONG *puHLID);

    HRESULT (STDMETHODCALLTYPE *UpdateHlink)(
        IHlinkBrowseContext *This,
        ULONG uHLID,
        IMoniker *pimkTarget,
        LPCWSTR pwzLocation,
        LPCWSTR pwzFriendlyName);

    HRESULT (STDMETHODCALLTYPE *EnumNavigationStack)(
        IHlinkBrowseContext *This,
        DWORD dwReserved,
        DWORD grfHLFNAMEF,
        IEnumHLITEM **ppienumhlitem);

    HRESULT (STDMETHODCALLTYPE *QueryHlink)(
        IHlinkBrowseContext *This,
        DWORD grfHLQF,
        ULONG uHLID);

    HRESULT (STDMETHODCALLTYPE *GetHlink)(
        IHlinkBrowseContext *This,
        ULONG uHLID,
        IHlink **ppihl);

    HRESULT (STDMETHODCALLTYPE *SetCurrentHlink)(
        IHlinkBrowseContext *This,
        ULONG uHLID);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        IHlinkBrowseContext *This,
        IUnknown *piunkOuter,
        REFIID riid,
        IUnknown **ppiunkObj);

    HRESULT (STDMETHODCALLTYPE *Close)(
        IHlinkBrowseContext *This,
        DWORD reserved);

    END_INTERFACE
} IHlinkBrowseContextVtbl;

interface IHlinkBrowseContext {
    CONST_VTBL IHlinkBrowseContextVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IHlinkBrowseContext_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IHlinkBrowseContext_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IHlinkBrowseContext_Release(This) (This)->lpVtbl->Release(This)
/*** IHlinkBrowseContext methods ***/
#define IHlinkBrowseContext_Register(This,reserved,piunk,pimk,pdwRegister) (This)->lpVtbl->Register(This,reserved,piunk,pimk,pdwRegister)
#define IHlinkBrowseContext_GetObject(This,pimk,fBindIfRootRegistered,ppiunk) (This)->lpVtbl->GetObject(This,pimk,fBindIfRootRegistered,ppiunk)
#define IHlinkBrowseContext_Revoke(This,dwRegister) (This)->lpVtbl->Revoke(This,dwRegister)
#define IHlinkBrowseContext_SetBrowseWindowInfo(This,phlbwi) (This)->lpVtbl->SetBrowseWindowInfo(This,phlbwi)
#define IHlinkBrowseContext_GetBrowseWindowInfo(This,phlbwi) (This)->lpVtbl->GetBrowseWindowInfo(This,phlbwi)
#define IHlinkBrowseContext_SetInitialHlink(This,pimkTarget,pwzLocation,pwzFriendlyName) (This)->lpVtbl->SetInitialHlink(This,pimkTarget,pwzLocation,pwzFriendlyName)
#define IHlinkBrowseContext_OnNavigateHlink(This,grfHLNF,pimkTarget,pwzLocation,pwzFriendlyName,puHLID) (This)->lpVtbl->OnNavigateHlink(This,grfHLNF,pimkTarget,pwzLocation,pwzFriendlyName,puHLID)
#define IHlinkBrowseContext_UpdateHlink(This,uHLID,pimkTarget,pwzLocation,pwzFriendlyName) (This)->lpVtbl->UpdateHlink(This,uHLID,pimkTarget,pwzLocation,pwzFriendlyName)
#define IHlinkBrowseContext_EnumNavigationStack(This,dwReserved,grfHLFNAMEF,ppienumhlitem) (This)->lpVtbl->EnumNavigationStack(This,dwReserved,grfHLFNAMEF,ppienumhlitem)
#define IHlinkBrowseContext_QueryHlink(This,grfHLQF,uHLID) (This)->lpVtbl->QueryHlink(This,grfHLQF,uHLID)
#define IHlinkBrowseContext_GetHlink(This,uHLID,ppihl) (This)->lpVtbl->GetHlink(This,uHLID,ppihl)
#define IHlinkBrowseContext_SetCurrentHlink(This,uHLID) (This)->lpVtbl->SetCurrentHlink(This,uHLID)
#define IHlinkBrowseContext_Clone(This,piunkOuter,riid,ppiunkObj) (This)->lpVtbl->Clone(This,piunkOuter,riid,ppiunkObj)
#define IHlinkBrowseContext_Close(This,reserved) (This)->lpVtbl->Close(This,reserved)
#else
/*** IUnknown methods ***/
static inline HRESULT IHlinkBrowseContext_QueryInterface(IHlinkBrowseContext* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IHlinkBrowseContext_AddRef(IHlinkBrowseContext* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IHlinkBrowseContext_Release(IHlinkBrowseContext* This) {
    return This->lpVtbl->Release(This);
}
/*** IHlinkBrowseContext methods ***/
static inline HRESULT IHlinkBrowseContext_Register(IHlinkBrowseContext* This,DWORD reserved,IUnknown *piunk,IMoniker *pimk,DWORD *pdwRegister) {
    return This->lpVtbl->Register(This,reserved,piunk,pimk,pdwRegister);
}
static inline HRESULT IHlinkBrowseContext_GetObject(IHlinkBrowseContext* This,IMoniker *pimk,BOOL fBindIfRootRegistered,IUnknown **ppiunk) {
    return This->lpVtbl->GetObject(This,pimk,fBindIfRootRegistered,ppiunk);
}
static inline HRESULT IHlinkBrowseContext_Revoke(IHlinkBrowseContext* This,DWORD dwRegister) {
    return This->lpVtbl->Revoke(This,dwRegister);
}
static inline HRESULT IHlinkBrowseContext_SetBrowseWindowInfo(IHlinkBrowseContext* This,HLBWINFO *phlbwi) {
    return This->lpVtbl->SetBrowseWindowInfo(This,phlbwi);
}
static inline HRESULT IHlinkBrowseContext_GetBrowseWindowInfo(IHlinkBrowseContext* This,HLBWINFO *phlbwi) {
    return This->lpVtbl->GetBrowseWindowInfo(This,phlbwi);
}
static inline HRESULT IHlinkBrowseContext_SetInitialHlink(IHlinkBrowseContext* This,IMoniker *pimkTarget,LPCWSTR pwzLocation,LPCWSTR pwzFriendlyName) {
    return This->lpVtbl->SetInitialHlink(This,pimkTarget,pwzLocation,pwzFriendlyName);
}
static inline HRESULT IHlinkBrowseContext_OnNavigateHlink(IHlinkBrowseContext* This,DWORD grfHLNF,IMoniker *pimkTarget,LPCWSTR pwzLocation,LPCWSTR pwzFriendlyName,ULONG *puHLID) {
    return This->lpVtbl->OnNavigateHlink(This,grfHLNF,pimkTarget,pwzLocation,pwzFriendlyName,puHLID);
}
static inline HRESULT IHlinkBrowseContext_UpdateHlink(IHlinkBrowseContext* This,ULONG uHLID,IMoniker *pimkTarget,LPCWSTR pwzLocation,LPCWSTR pwzFriendlyName) {
    return This->lpVtbl->UpdateHlink(This,uHLID,pimkTarget,pwzLocation,pwzFriendlyName);
}
static inline HRESULT IHlinkBrowseContext_EnumNavigationStack(IHlinkBrowseContext* This,DWORD dwReserved,DWORD grfHLFNAMEF,IEnumHLITEM **ppienumhlitem) {
    return This->lpVtbl->EnumNavigationStack(This,dwReserved,grfHLFNAMEF,ppienumhlitem);
}
static inline HRESULT IHlinkBrowseContext_QueryHlink(IHlinkBrowseContext* This,DWORD grfHLQF,ULONG uHLID) {
    return This->lpVtbl->QueryHlink(This,grfHLQF,uHLID);
}
static inline HRESULT IHlinkBrowseContext_GetHlink(IHlinkBrowseContext* This,ULONG uHLID,IHlink **ppihl) {
    return This->lpVtbl->GetHlink(This,uHLID,ppihl);
}
static inline HRESULT IHlinkBrowseContext_SetCurrentHlink(IHlinkBrowseContext* This,ULONG uHLID) {
    return This->lpVtbl->SetCurrentHlink(This,uHLID);
}
static inline HRESULT IHlinkBrowseContext_Clone(IHlinkBrowseContext* This,IUnknown *piunkOuter,REFIID riid,IUnknown **ppiunkObj) {
    return This->lpVtbl->Clone(This,piunkOuter,riid,ppiunkObj);
}
static inline HRESULT IHlinkBrowseContext_Close(IHlinkBrowseContext* This,DWORD reserved) {
    return This->lpVtbl->Close(This,reserved);
}
#endif
#endif

#endif


#endif  /* __IHlinkBrowseContext_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IHlinkTarget interface
 */
#ifndef __IHlinkTarget_INTERFACE_DEFINED__
#define __IHlinkTarget_INTERFACE_DEFINED__

typedef IHlinkTarget *LPHLINKTARGET;
DEFINE_GUID(IID_IHlinkTarget, 0x79eac9c4, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("79eac9c4-baf9-11ce-8c82-00aa004ba90b")
IHlinkTarget : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetBrowseContext(
        IHlinkBrowseContext *pihlbc) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBrowseContext(
        IHlinkBrowseContext **ppihlbc) = 0;

    virtual HRESULT STDMETHODCALLTYPE Navigate(
        DWORD grfHLNF,
        LPCWSTR pwzJumpLocation) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMoniker(
        LPCWSTR pwzLocation,
        DWORD dwAssign,
        IMoniker **ppimkLocation) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFriendlyName(
        LPCWSTR pwzLocation,
        LPWSTR *ppwzFriendlyName) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IHlinkTarget, 0x79eac9c4, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
#endif
#else
typedef struct IHlinkTargetVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IHlinkTarget methods ***/
    HRESULT (STDMETHODCALLTYPE *SetBrowseContext)(
        IHlinkTarget *This,
        IHlinkBrowseContext *pihlbc);

    HRESULT (STDMETHODCALLTYPE *GetBrowseContext)(
        IHlinkTarget *This,
        IHlinkBrowseContext **ppihlbc);

    HRESULT (STDMETHODCALLTYPE *Navigate)(
        IHlinkTarget *This,
        DWORD grfHLNF,
        LPCWSTR pwzJumpLocation);

    HRESULT (STDMETHODCALLTYPE *GetMoniker)(
        IHlinkTarget *This,
        LPCWSTR pwzLocation,
        DWORD dwAssign,
        IMoniker **ppimkLocation);

    HRESULT (STDMETHODCALLTYPE *GetFriendlyName)(
        IHlinkTarget *This,
        LPCWSTR pwzLocation,
        LPWSTR *ppwzFriendlyName);

    END_INTERFACE
} IHlinkTargetVtbl;

interface IHlinkTarget {
    CONST_VTBL IHlinkTargetVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IHlinkTarget_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IHlinkTarget_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IHlinkTarget_Release(This) (This)->lpVtbl->Release(This)
/*** IHlinkTarget methods ***/
#define IHlinkTarget_SetBrowseContext(This,pihlbc) (This)->lpVtbl->SetBrowseContext(This,pihlbc)
#define IHlinkTarget_GetBrowseContext(This,ppihlbc) (This)->lpVtbl->GetBrowseContext(This,ppihlbc)
#define IHlinkTarget_Navigate(This,grfHLNF,pwzJumpLocation) (This)->lpVtbl->Navigate(This,grfHLNF,pwzJumpLocation)
#define IHlinkTarget_GetMoniker(This,pwzLocation,dwAssign,ppimkLocation) (This)->lpVtbl->GetMoniker(This,pwzLocation,dwAssign,ppimkLocation)
#define IHlinkTarget_GetFriendlyName(This,pwzLocation,ppwzFriendlyName) (This)->lpVtbl->GetFriendlyName(This,pwzLocation,ppwzFriendlyName)
#else
/*** IUnknown methods ***/
static inline HRESULT IHlinkTarget_QueryInterface(IHlinkTarget* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IHlinkTarget_AddRef(IHlinkTarget* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IHlinkTarget_Release(IHlinkTarget* This) {
    return This->lpVtbl->Release(This);
}
/*** IHlinkTarget methods ***/
static inline HRESULT IHlinkTarget_SetBrowseContext(IHlinkTarget* This,IHlinkBrowseContext *pihlbc) {
    return This->lpVtbl->SetBrowseContext(This,pihlbc);
}
static inline HRESULT IHlinkTarget_GetBrowseContext(IHlinkTarget* This,IHlinkBrowseContext **ppihlbc) {
    return This->lpVtbl->GetBrowseContext(This,ppihlbc);
}
static inline HRESULT IHlinkTarget_Navigate(IHlinkTarget* This,DWORD grfHLNF,LPCWSTR pwzJumpLocation) {
    return This->lpVtbl->Navigate(This,grfHLNF,pwzJumpLocation);
}
static inline HRESULT IHlinkTarget_GetMoniker(IHlinkTarget* This,LPCWSTR pwzLocation,DWORD dwAssign,IMoniker **ppimkLocation) {
    return This->lpVtbl->GetMoniker(This,pwzLocation,dwAssign,ppimkLocation);
}
static inline HRESULT IHlinkTarget_GetFriendlyName(IHlinkTarget* This,LPCWSTR pwzLocation,LPWSTR *ppwzFriendlyName) {
    return This->lpVtbl->GetFriendlyName(This,pwzLocation,ppwzFriendlyName);
}
#endif
#endif

#endif


#endif  /* __IHlinkTarget_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IHlinkFrame interface
 */
#ifndef __IHlinkFrame_INTERFACE_DEFINED__
#define __IHlinkFrame_INTERFACE_DEFINED__

typedef IHlinkFrame *LPHLINKFRAME;
DEFINE_GUID(IID_IHlinkFrame, 0x79eac9c5, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("79eac9c5-baf9-11ce-8c82-00aa004ba90b")
IHlinkFrame : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetBrowseContext(
        IHlinkBrowseContext *pihlbc) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBrowseContext(
        IHlinkBrowseContext **ppihlbc) = 0;

    virtual HRESULT STDMETHODCALLTYPE Navigate(
        DWORD grfHLNF,
        LPBC pbc,
        IBindStatusCallback *pibsc,
        IHlink *pihlNavigate) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnNavigate(
        DWORD grfHLNF,
        IMoniker *pimkTarget,
        LPCWSTR pwzLocation,
        LPCWSTR pwzFriendlyName,
        DWORD dwreserved) = 0;

    virtual HRESULT STDMETHODCALLTYPE UpdateHlink(
        ULONG uHLID,
        IMoniker *pimkTarget,
        LPCWSTR pwzLocation,
        LPCWSTR pwzFriendlyName) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IHlinkFrame, 0x79eac9c5, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
#endif
#else
typedef struct IHlinkFrameVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IHlinkFrame methods ***/
    HRESULT (STDMETHODCALLTYPE *SetBrowseContext)(
        IHlinkFrame *This,
        IHlinkBrowseContext *pihlbc);

    HRESULT (STDMETHODCALLTYPE *GetBrowseContext)(
        IHlinkFrame *This,
        IHlinkBrowseContext **ppihlbc);

    HRESULT (STDMETHODCALLTYPE *Navigate)(
        IHlinkFrame *This,
        DWORD grfHLNF,
        LPBC pbc,
        IBindStatusCallback *pibsc,
        IHlink *pihlNavigate);

    HRESULT (STDMETHODCALLTYPE *OnNavigate)(
        IHlinkFrame *This,
        DWORD grfHLNF,
        IMoniker *pimkTarget,
        LPCWSTR pwzLocation,
        LPCWSTR pwzFriendlyName,
        DWORD dwreserved);

    HRESULT (STDMETHODCALLTYPE *UpdateHlink)(
        IHlinkFrame *This,
        ULONG uHLID,
        IMoniker *pimkTarget,
        LPCWSTR pwzLocation,
        LPCWSTR pwzFriendlyName);

    END_INTERFACE
} IHlinkFrameVtbl;

interface IHlinkFrame {
    CONST_VTBL IHlinkFrameVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IHlinkFrame_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IHlinkFrame_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IHlinkFrame_Release(This) (This)->lpVtbl->Release(This)
/*** IHlinkFrame methods ***/
#define IHlinkFrame_SetBrowseContext(This,pihlbc) (This)->lpVtbl->SetBrowseContext(This,pihlbc)
#define IHlinkFrame_GetBrowseContext(This,ppihlbc) (This)->lpVtbl->GetBrowseContext(This,ppihlbc)
#define IHlinkFrame_Navigate(This,grfHLNF,pbc,pibsc,pihlNavigate) (This)->lpVtbl->Navigate(This,grfHLNF,pbc,pibsc,pihlNavigate)
#define IHlinkFrame_OnNavigate(This,grfHLNF,pimkTarget,pwzLocation,pwzFriendlyName,dwreserved) (This)->lpVtbl->OnNavigate(This,grfHLNF,pimkTarget,pwzLocation,pwzFriendlyName,dwreserved)
#define IHlinkFrame_UpdateHlink(This,uHLID,pimkTarget,pwzLocation,pwzFriendlyName) (This)->lpVtbl->UpdateHlink(This,uHLID,pimkTarget,pwzLocation,pwzFriendlyName)
#else
/*** IUnknown methods ***/
static inline HRESULT IHlinkFrame_QueryInterface(IHlinkFrame* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IHlinkFrame_AddRef(IHlinkFrame* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IHlinkFrame_Release(IHlinkFrame* This) {
    return This->lpVtbl->Release(This);
}
/*** IHlinkFrame methods ***/
static inline HRESULT IHlinkFrame_SetBrowseContext(IHlinkFrame* This,IHlinkBrowseContext *pihlbc) {
    return This->lpVtbl->SetBrowseContext(This,pihlbc);
}
static inline HRESULT IHlinkFrame_GetBrowseContext(IHlinkFrame* This,IHlinkBrowseContext **ppihlbc) {
    return This->lpVtbl->GetBrowseContext(This,ppihlbc);
}
static inline HRESULT IHlinkFrame_Navigate(IHlinkFrame* This,DWORD grfHLNF,LPBC pbc,IBindStatusCallback *pibsc,IHlink *pihlNavigate) {
    return This->lpVtbl->Navigate(This,grfHLNF,pbc,pibsc,pihlNavigate);
}
static inline HRESULT IHlinkFrame_OnNavigate(IHlinkFrame* This,DWORD grfHLNF,IMoniker *pimkTarget,LPCWSTR pwzLocation,LPCWSTR pwzFriendlyName,DWORD dwreserved) {
    return This->lpVtbl->OnNavigate(This,grfHLNF,pimkTarget,pwzLocation,pwzFriendlyName,dwreserved);
}
static inline HRESULT IHlinkFrame_UpdateHlink(IHlinkFrame* This,ULONG uHLID,IMoniker *pimkTarget,LPCWSTR pwzLocation,LPCWSTR pwzFriendlyName) {
    return This->lpVtbl->UpdateHlink(This,uHLID,pimkTarget,pwzLocation,pwzFriendlyName);
}
#endif
#endif

#endif


#endif  /* __IHlinkFrame_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IExtensionServices interface
 */
#ifndef __IExtensionServices_INTERFACE_DEFINED__
#define __IExtensionServices_INTERFACE_DEFINED__

typedef IExtensionServices *LPEXTENSIONSERVICES;
DEFINE_GUID(IID_IExtensionServices, 0x79eac9cb, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("79eac9cb-baf9-11ce-8c82-00aa004ba90b")
IExtensionServices : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetAdditionalHeaders(
        LPCWSTR pwzAdditionalHeaders) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAuthenticateData(
        HWND phwnd,
        LPCWSTR pwzUsername,
        LPCWSTR pwzPassword) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IExtensionServices, 0x79eac9cb, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
#endif
#else
typedef struct IExtensionServicesVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IExtensionServices methods ***/
    HRESULT (STDMETHODCALLTYPE *SetAdditionalHeaders)(
        IExtensionServices *This,
        LPCWSTR pwzAdditionalHeaders);

    HRESULT (STDMETHODCALLTYPE *SetAuthenticateData)(
        IExtensionServices *This,
        HWND phwnd,
        LPCWSTR pwzUsername,
        LPCWSTR pwzPassword);

    END_INTERFACE
} IExtensionServicesVtbl;

interface IExtensionServices {
    CONST_VTBL IExtensionServicesVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IExtensionServices_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IExtensionServices_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IExtensionServices_Release(This) (This)->lpVtbl->Release(This)
/*** IExtensionServices methods ***/
#define IExtensionServices_SetAdditionalHeaders(This,pwzAdditionalHeaders) (This)->lpVtbl->SetAdditionalHeaders(This,pwzAdditionalHeaders)
#define IExtensionServices_SetAuthenticateData(This,phwnd,pwzUsername,pwzPassword) (This)->lpVtbl->SetAuthenticateData(This,phwnd,pwzUsername,pwzPassword)
#else
/*** IUnknown methods ***/
static inline HRESULT IExtensionServices_QueryInterface(IExtensionServices* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IExtensionServices_AddRef(IExtensionServices* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IExtensionServices_Release(IExtensionServices* This) {
    return This->lpVtbl->Release(This);
}
/*** IExtensionServices methods ***/
static inline HRESULT IExtensionServices_SetAdditionalHeaders(IExtensionServices* This,LPCWSTR pwzAdditionalHeaders) {
    return This->lpVtbl->SetAdditionalHeaders(This,pwzAdditionalHeaders);
}
static inline HRESULT IExtensionServices_SetAuthenticateData(IExtensionServices* This,HWND phwnd,LPCWSTR pwzUsername,LPCWSTR pwzPassword) {
    return This->lpVtbl->SetAuthenticateData(This,phwnd,pwzUsername,pwzPassword);
}
#endif
#endif

#endif


#endif  /* __IExtensionServices_INTERFACE_DEFINED__ */

/* Begin additional prototypes for all interfaces */

ULONG           __RPC_USER HWND_UserSize     (ULONG *, ULONG, HWND *);
unsigned char * __RPC_USER HWND_UserMarshal  (ULONG *, unsigned char *, HWND *);
unsigned char * __RPC_USER HWND_UserUnmarshal(ULONG *, unsigned char *, HWND *);
void            __RPC_USER HWND_UserFree     (ULONG *, HWND *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __hlink_h__ */
