/*** Autogenerated by WIDL 0.9.22 from hlink.idl - Do not edit ***/
#include <rpc.h>
#include <rpcndr.h>

#ifndef __WIDL_HLINK_H
#define __WIDL_HLINK_H
#ifdef __cplusplus
extern "C" {
#endif
#include <urlmon.h>
#ifndef __IHlink_FWD_DEFINED__
#define __IHlink_FWD_DEFINED__
typedef interface IHlink IHlink;
#endif

#ifndef __IHlinkSite_FWD_DEFINED__
#define __IHlinkSite_FWD_DEFINED__
typedef interface IHlinkSite IHlinkSite;
#endif

#ifndef __IHlinkFrame_FWD_DEFINED__
#define __IHlinkFrame_FWD_DEFINED__
typedef interface IHlinkFrame IHlinkFrame;
#endif

#ifndef __IHlinkBrowseContext_FWD_DEFINED__
#define __IHlinkBrowseContext_FWD_DEFINED__
typedef interface IHlinkBrowseContext IHlinkBrowseContext;
#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 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*);
typedef IHlink *LPHLINK;
typedef enum __WIDL_hlink_generated_name_00000000 {
    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_00000001 {
    HLINKGETREF_DEFAULT = 0,
    HLINKGETREF_ABSOLUTE = 1,
    HLINKGETREF_RELATIVE = 2
} HLINKGETREF;
typedef enum __WIDL_hlink_generated_name_00000002 {
    HLFNAMEF_DEFAULT = 0x0,
    HLFNAMEF_TRYCACHE = 0x1,
    HLFNAMEF_TRYPRETTYTARGET = 0x2,
    HLFNAMEF_TRYFULLTARGET = 0x4,
    HLFNAMEF_TRYWIN95SHORTCUT = 0x8
} HLFNAMEF;
typedef enum __WIDL_hlink_generated_name_00000003 {
    HLINKMISC_RELATIVE = 0x1
} HLINKMISC;
typedef enum __WIDL_hlink_generated_name_00000004 {
    HLINKSETF_TARGET = 0x1,
    HLINKSETF_LOCATION = 0x2
} HLINKSETF;
/*****************************************************************************
 * IHlink interface
 */
#ifndef __IHlink_INTERFACE_DEFINED__
#define __IHlink_INTERFACE_DEFINED__

DEFINE_GUID(IID_IHlink, 0x79eac9c3, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface 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;

};
#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 IHlinkVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IHlink_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IHlink_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IHlink_Release(p) (p)->lpVtbl->Release(p)
/*** IHlink methods ***/
#define IHlink_SetHlinkSite(p,a,b) (p)->lpVtbl->SetHlinkSite(p,a,b)
#define IHlink_GetHlinkSite(p,a,b) (p)->lpVtbl->GetHlinkSite(p,a,b)
#define IHlink_SetMonikerReference(p,a,b,c) (p)->lpVtbl->SetMonikerReference(p,a,b,c)
#define IHlink_GetMonikerReference(p,a,b,c) (p)->lpVtbl->GetMonikerReference(p,a,b,c)
#define IHlink_SetStringReference(p,a,b,c) (p)->lpVtbl->SetStringReference(p,a,b,c)
#define IHlink_GetStringReference(p,a,b,c) (p)->lpVtbl->GetStringReference(p,a,b,c)
#define IHlink_SetFriendlyName(p,a) (p)->lpVtbl->SetFriendlyName(p,a)
#define IHlink_GetFriendlyName(p,a,b) (p)->lpVtbl->GetFriendlyName(p,a,b)
#define IHlink_SetTargetFrameName(p,a) (p)->lpVtbl->SetTargetFrameName(p,a)
#define IHlink_GetTargetFrameName(p,a) (p)->lpVtbl->GetTargetFrameName(p,a)
#define IHlink_GetMiscStatus(p,a) (p)->lpVtbl->GetMiscStatus(p,a)
#define IHlink_Navigate(p,a,b,c,d) (p)->lpVtbl->Navigate(p,a,b,c,d)
#define IHlink_SetAdditionalParams(p,a) (p)->lpVtbl->SetAdditionalParams(p,a)
#define IHlink_GetAdditionalParams(p,a) (p)->lpVtbl->GetAdditionalParams(p,a)
#endif

#endif

HRESULT CALLBACK IHlink_SetHlinkSite_Proxy(
    IHlink* This,
    IHlinkSite* pihlSite,
    DWORD dwSiteData);
void __RPC_STUB IHlink_SetHlinkSite_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlink_GetHlinkSite_Proxy(
    IHlink* This,
    IHlinkSite** ppihlSite,
    DWORD* pdwSiteData);
void __RPC_STUB IHlink_GetHlinkSite_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlink_SetMonikerReference_Proxy(
    IHlink* This,
    DWORD grfHLSETF,
    IMoniker* pimkTarget,
    LPCWSTR pwzLocation);
void __RPC_STUB IHlink_SetMonikerReference_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlink_GetMonikerReference_Proxy(
    IHlink* This,
    DWORD dwWhichRef,
    IMoniker** ppimkTarget,
    LPWSTR* ppwzLocation);
void __RPC_STUB IHlink_GetMonikerReference_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlink_SetStringReference_Proxy(
    IHlink* This,
    DWORD grfHLSETF,
    LPCWSTR pwzTarget,
    LPCWSTR pwzLocation);
void __RPC_STUB IHlink_SetStringReference_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlink_GetStringReference_Proxy(
    IHlink* This,
    DWORD dwWhichRef,
    LPWSTR* ppwzTarget,
    LPWSTR* ppwzLocation);
void __RPC_STUB IHlink_GetStringReference_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlink_SetFriendlyName_Proxy(
    IHlink* This,
    LPCWSTR pwzFriendlyName);
void __RPC_STUB IHlink_SetFriendlyName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlink_GetFriendlyName_Proxy(
    IHlink* This,
    DWORD grfHLFNAMEF,
    LPWSTR* ppwzFriendlyName);
void __RPC_STUB IHlink_GetFriendlyName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlink_SetTargetFrameName_Proxy(
    IHlink* This,
    LPCWSTR pwzTargetFrameName);
void __RPC_STUB IHlink_SetTargetFrameName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlink_GetTargetFrameName_Proxy(
    IHlink* This,
    LPWSTR* ppwzTargetFrameName);
void __RPC_STUB IHlink_GetTargetFrameName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlink_GetMiscStatus_Proxy(
    IHlink* This,
    DWORD* pdwStatus);
void __RPC_STUB IHlink_GetMiscStatus_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlink_Navigate_Proxy(
    IHlink* This,
    DWORD grfHLNF,
    LPBC pibc,
    IBindStatusCallback* pibsc,
    IHlinkBrowseContext* pihlbc);
void __RPC_STUB IHlink_Navigate_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlink_SetAdditionalParams_Proxy(
    IHlink* This,
    LPCWSTR pwzAdditionalParams);
void __RPC_STUB IHlink_SetAdditionalParams_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlink_GetAdditionalParams_Proxy(
    IHlink* This,
    LPWSTR* ppwzAdditionalParams);
void __RPC_STUB IHlink_GetAdditionalParams_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IHlink_INTERFACE_DEFINED__ */

typedef IHlinkSite *LPHLINKSITE;
typedef enum __WIDL_hlink_generated_name_00000005 {
    HLINKWHICHMK_CONTAINER = 1,
    HLINKWHICHMK_BASE = 2
} HLINKWHICHMK;
/*****************************************************************************
 * IHlinkSite interface
 */
#ifndef __IHlinkSite_INTERFACE_DEFINED__
#define __IHlinkSite_INTERFACE_DEFINED__

DEFINE_GUID(IID_IHlinkSite, 0x79eac9c2, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface 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;

};
#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 IHlinkSiteVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IHlinkSite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IHlinkSite_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IHlinkSite_Release(p) (p)->lpVtbl->Release(p)
/*** IHlinkSite methods ***/
#define IHlinkSite_QueryService(p,a,b,c,d) (p)->lpVtbl->QueryService(p,a,b,c,d)
#define IHlinkSite_GetMoniker(p,a,b,c,d) (p)->lpVtbl->GetMoniker(p,a,b,c,d)
#define IHlinkSite_ReadyToNavigate(p,a,b) (p)->lpVtbl->ReadyToNavigate(p,a,b)
#define IHlinkSite_OnNavigationComplete(p,a,b,c,d) (p)->lpVtbl->OnNavigationComplete(p,a,b,c,d)
#endif

#endif

HRESULT CALLBACK IHlinkSite_QueryService_Proxy(
    IHlinkSite* This,
    DWORD dwSiteData,
    REFGUID guidService,
    REFIID riid,
    IUnknown** ppiunk);
void __RPC_STUB IHlinkSite_QueryService_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlinkSite_GetMoniker_Proxy(
    IHlinkSite* This,
    DWORD dwSiteData,
    DWORD dwAssign,
    DWORD dwWhich,
    IMoniker** ppimk);
void __RPC_STUB IHlinkSite_GetMoniker_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlinkSite_ReadyToNavigate_Proxy(
    IHlinkSite* This,
    DWORD dwSiteData,
    DWORD dwReserved);
void __RPC_STUB IHlinkSite_ReadyToNavigate_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlinkSite_OnNavigationComplete_Proxy(
    IHlinkSite* This,
    DWORD dwSiteData,
    DWORD dwreserved,
    HRESULT hrError,
    LPCWSTR pwzError);
void __RPC_STUB IHlinkSite_OnNavigationComplete_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IHlinkSite_INTERFACE_DEFINED__ */

#ifndef __IEnumHLITEM_FWD_DEFINED__
#define __IEnumHLITEM_FWD_DEFINED__
typedef interface IEnumHLITEM IEnumHLITEM;
#endif

typedef IEnumHLITEM *LPENUMHLITEM;
typedef struct tagHLITEM {
    ULONG uHLID;
    LPWSTR pwzFriendlyName;
} HLITEM;
typedef HLITEM *LPHLITEM;
/*****************************************************************************
 * IEnumHLITEM interface
 */
#ifndef __IEnumHLITEM_INTERFACE_DEFINED__
#define __IEnumHLITEM_INTERFACE_DEFINED__

DEFINE_GUID(IID_IEnumHLITEM, 0x79eac9c6, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface 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;

};
#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 IEnumHLITEMVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IEnumHLITEM_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IEnumHLITEM_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IEnumHLITEM_Release(p) (p)->lpVtbl->Release(p)
/*** IEnumHLITEM methods ***/
#define IEnumHLITEM_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
#define IEnumHLITEM_Skip(p,a) (p)->lpVtbl->Skip(p,a)
#define IEnumHLITEM_Reset(p) (p)->lpVtbl->Reset(p)
#define IEnumHLITEM_Clone(p,a) (p)->lpVtbl->Clone(p,a)
#endif

#endif

HRESULT CALLBACK IEnumHLITEM_Next_Proxy(
    IEnumHLITEM* This,
    ULONG celt,
    HLITEM* rgelt,
    ULONG* pceltFetched);
void __RPC_STUB IEnumHLITEM_Next_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IEnumHLITEM_Skip_Proxy(
    IEnumHLITEM* This,
    ULONG celt);
void __RPC_STUB IEnumHLITEM_Skip_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IEnumHLITEM_Reset_Proxy(
    IEnumHLITEM* This);
void __RPC_STUB IEnumHLITEM_Reset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IEnumHLITEM_Clone_Proxy(
    IEnumHLITEM* This,
    IEnumHLITEM** ppienumhlitem);
void __RPC_STUB IEnumHLITEM_Clone_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IEnumHLITEM_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
};

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

DEFINE_GUID(IID_IHlinkBrowseContext, 0x79eac9c7, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface 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;

};
#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 IHlinkBrowseContextVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IHlinkBrowseContext_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IHlinkBrowseContext_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IHlinkBrowseContext_Release(p) (p)->lpVtbl->Release(p)
/*** IHlinkBrowseContext methods ***/
#define IHlinkBrowseContext_Register(p,a,b,c,d) (p)->lpVtbl->Register(p,a,b,c,d)
#define IHlinkBrowseContext_GetObject(p,a,b,c) (p)->lpVtbl->GetObject(p,a,b,c)
#define IHlinkBrowseContext_Revoke(p,a) (p)->lpVtbl->Revoke(p,a)
#define IHlinkBrowseContext_SetBrowseWindowInfo(p,a) (p)->lpVtbl->SetBrowseWindowInfo(p,a)
#define IHlinkBrowseContext_GetBrowseWindowInfo(p,a) (p)->lpVtbl->GetBrowseWindowInfo(p,a)
#define IHlinkBrowseContext_SetInitialHlink(p,a,b,c) (p)->lpVtbl->SetInitialHlink(p,a,b,c)
#define IHlinkBrowseContext_OnNavigateHlink(p,a,b,c,d,e) (p)->lpVtbl->OnNavigateHlink(p,a,b,c,d,e)
#define IHlinkBrowseContext_UpdateHlink(p,a,b,c,d) (p)->lpVtbl->UpdateHlink(p,a,b,c,d)
#define IHlinkBrowseContext_EnumNavigationStack(p,a,b,c) (p)->lpVtbl->EnumNavigationStack(p,a,b,c)
#define IHlinkBrowseContext_QueryHlink(p,a,b) (p)->lpVtbl->QueryHlink(p,a,b)
#define IHlinkBrowseContext_GetHlink(p,a,b) (p)->lpVtbl->GetHlink(p,a,b)
#define IHlinkBrowseContext_SetCurrentHlink(p,a) (p)->lpVtbl->SetCurrentHlink(p,a)
#define IHlinkBrowseContext_Clone(p,a,b,c) (p)->lpVtbl->Clone(p,a,b,c)
#define IHlinkBrowseContext_Close(p,a) (p)->lpVtbl->Close(p,a)
#endif

#endif

HRESULT CALLBACK IHlinkBrowseContext_Register_Proxy(
    IHlinkBrowseContext* This,
    DWORD reserved,
    IUnknown* piunk,
    IMoniker* pimk,
    DWORD* pdwRegister);
void __RPC_STUB IHlinkBrowseContext_Register_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlinkBrowseContext_GetObject_Proxy(
    IHlinkBrowseContext* This,
    IMoniker* pimk,
    BOOL fBindIfRootRegistered,
    IUnknown** ppiunk);
void __RPC_STUB IHlinkBrowseContext_GetObject_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlinkBrowseContext_Revoke_Proxy(
    IHlinkBrowseContext* This,
    DWORD dwRegister);
void __RPC_STUB IHlinkBrowseContext_Revoke_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlinkBrowseContext_SetBrowseWindowInfo_Proxy(
    IHlinkBrowseContext* This,
    HLBWINFO* phlbwi);
void __RPC_STUB IHlinkBrowseContext_SetBrowseWindowInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlinkBrowseContext_GetBrowseWindowInfo_Proxy(
    IHlinkBrowseContext* This,
    HLBWINFO* phlbwi);
void __RPC_STUB IHlinkBrowseContext_GetBrowseWindowInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlinkBrowseContext_SetInitialHlink_Proxy(
    IHlinkBrowseContext* This,
    IMoniker* pimkTarget,
    LPCWSTR pwzLocation,
    LPCWSTR pwzFriendlyName);
void __RPC_STUB IHlinkBrowseContext_SetInitialHlink_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlinkBrowseContext_OnNavigateHlink_Proxy(
    IHlinkBrowseContext* This,
    DWORD grfHLNF,
    IMoniker* pimkTarget,
    LPCWSTR pwzLocation,
    LPCWSTR pwzFriendlyName,
    ULONG* puHLID);
void __RPC_STUB IHlinkBrowseContext_OnNavigateHlink_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlinkBrowseContext_UpdateHlink_Proxy(
    IHlinkBrowseContext* This,
    ULONG uHLID,
    IMoniker* pimkTarget,
    LPCWSTR pwzLocation,
    LPCWSTR pwzFriendlyName);
void __RPC_STUB IHlinkBrowseContext_UpdateHlink_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlinkBrowseContext_EnumNavigationStack_Proxy(
    IHlinkBrowseContext* This,
    DWORD dwReserved,
    DWORD grfHLFNAMEF,
    IEnumHLITEM** ppienumhlitem);
void __RPC_STUB IHlinkBrowseContext_EnumNavigationStack_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlinkBrowseContext_QueryHlink_Proxy(
    IHlinkBrowseContext* This,
    DWORD grfHLQF,
    ULONG uHLID);
void __RPC_STUB IHlinkBrowseContext_QueryHlink_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlinkBrowseContext_GetHlink_Proxy(
    IHlinkBrowseContext* This,
    ULONG uHLID,
    IHlink** ppihl);
void __RPC_STUB IHlinkBrowseContext_GetHlink_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlinkBrowseContext_SetCurrentHlink_Proxy(
    IHlinkBrowseContext* This,
    ULONG uHLID);
void __RPC_STUB IHlinkBrowseContext_SetCurrentHlink_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlinkBrowseContext_Clone_Proxy(
    IHlinkBrowseContext* This,
    IUnknown* piunkOuter,
    REFIID riid,
    IUnknown** ppiunkObj);
void __RPC_STUB IHlinkBrowseContext_Clone_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlinkBrowseContext_Close_Proxy(
    IHlinkBrowseContext* This,
    DWORD reserved);
void __RPC_STUB IHlinkBrowseContext_Close_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IHlinkBrowseContext_INTERFACE_DEFINED__ */

#ifndef __IHlinkTarget_FWD_DEFINED__
#define __IHlinkTarget_FWD_DEFINED__
typedef interface IHlinkTarget IHlinkTarget;
#endif

typedef IHlinkTarget *LPHLINKTARGET;
/*****************************************************************************
 * IHlinkTarget interface
 */
#ifndef __IHlinkTarget_INTERFACE_DEFINED__
#define __IHlinkTarget_INTERFACE_DEFINED__

DEFINE_GUID(IID_IHlinkTarget, 0x79eac9c4, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface 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;

};
#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 IHlinkTargetVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IHlinkTarget_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IHlinkTarget_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IHlinkTarget_Release(p) (p)->lpVtbl->Release(p)
/*** IHlinkTarget methods ***/
#define IHlinkTarget_SetBrowseContext(p,a) (p)->lpVtbl->SetBrowseContext(p,a)
#define IHlinkTarget_GetBrowseContext(p,a) (p)->lpVtbl->GetBrowseContext(p,a)
#define IHlinkTarget_Navigate(p,a,b) (p)->lpVtbl->Navigate(p,a,b)
#define IHlinkTarget_GetMoniker(p,a,b,c) (p)->lpVtbl->GetMoniker(p,a,b,c)
#define IHlinkTarget_GetFriendlyName(p,a,b) (p)->lpVtbl->GetFriendlyName(p,a,b)
#endif

#endif

HRESULT CALLBACK IHlinkTarget_SetBrowseContext_Proxy(
    IHlinkTarget* This,
    IHlinkBrowseContext* pihlbc);
void __RPC_STUB IHlinkTarget_SetBrowseContext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlinkTarget_GetBrowseContext_Proxy(
    IHlinkTarget* This,
    IHlinkBrowseContext** ppihlbc);
void __RPC_STUB IHlinkTarget_GetBrowseContext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlinkTarget_Navigate_Proxy(
    IHlinkTarget* This,
    DWORD grfHLNF,
    LPCWSTR pwzJumpLocation);
void __RPC_STUB IHlinkTarget_Navigate_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlinkTarget_GetMoniker_Proxy(
    IHlinkTarget* This,
    LPCWSTR pwzLocation,
    DWORD dwAssign,
    IMoniker** ppimkLocation);
void __RPC_STUB IHlinkTarget_GetMoniker_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlinkTarget_GetFriendlyName_Proxy(
    IHlinkTarget* This,
    LPCWSTR pwzLocation,
    LPWSTR* ppwzFriendlyName);
void __RPC_STUB IHlinkTarget_GetFriendlyName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IHlinkTarget_INTERFACE_DEFINED__ */

typedef IHlinkFrame *LPHLINKFRAME;
/*****************************************************************************
 * IHlinkFrame interface
 */
#ifndef __IHlinkFrame_INTERFACE_DEFINED__
#define __IHlinkFrame_INTERFACE_DEFINED__

DEFINE_GUID(IID_IHlinkFrame, 0x79eac9c5, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface 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;

};
#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 IHlinkFrameVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IHlinkFrame_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IHlinkFrame_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IHlinkFrame_Release(p) (p)->lpVtbl->Release(p)
/*** IHlinkFrame methods ***/
#define IHlinkFrame_SetBrowseContext(p,a) (p)->lpVtbl->SetBrowseContext(p,a)
#define IHlinkFrame_GetBrowseContext(p,a) (p)->lpVtbl->GetBrowseContext(p,a)
#define IHlinkFrame_Navigate(p,a,b,c,d) (p)->lpVtbl->Navigate(p,a,b,c,d)
#define IHlinkFrame_OnNavigate(p,a,b,c,d,e) (p)->lpVtbl->OnNavigate(p,a,b,c,d,e)
#define IHlinkFrame_UpdateHlink(p,a,b,c,d) (p)->lpVtbl->UpdateHlink(p,a,b,c,d)
#endif

#endif

HRESULT CALLBACK IHlinkFrame_SetBrowseContext_Proxy(
    IHlinkFrame* This,
    IHlinkBrowseContext* pihlbc);
void __RPC_STUB IHlinkFrame_SetBrowseContext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlinkFrame_GetBrowseContext_Proxy(
    IHlinkFrame* This,
    IHlinkBrowseContext** ppihlbc);
void __RPC_STUB IHlinkFrame_GetBrowseContext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlinkFrame_Navigate_Proxy(
    IHlinkFrame* This,
    DWORD grfHLNF,
    LPBC pbc,
    IBindStatusCallback* pibsc,
    IHlink* pihlNavigate);
void __RPC_STUB IHlinkFrame_Navigate_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlinkFrame_OnNavigate_Proxy(
    IHlinkFrame* This,
    DWORD grfHLNF,
    IMoniker* pimkTarget,
    LPCWSTR pwzLocation,
    LPCWSTR pwzFriendlyName,
    DWORD dwreserved);
void __RPC_STUB IHlinkFrame_OnNavigate_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IHlinkFrame_UpdateHlink_Proxy(
    IHlinkFrame* This,
    ULONG uHLID,
    IMoniker* pimkTarget,
    LPCWSTR pwzLocation,
    LPCWSTR pwzFriendlyName);
void __RPC_STUB IHlinkFrame_UpdateHlink_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IHlinkFrame_INTERFACE_DEFINED__ */

/* Begin additional prototypes for all interfaces */


/* End additional prototypes */

#ifdef __cplusplus
}
#endif
#endif /* __WIDL_HLINK_H */
