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

#ifndef __WIDL_URLHIST_H
#define __WIDL_URLHIST_H
#ifdef __cplusplus
extern "C" {
#endif
#include <objidl.h>
#include <oleidl.h>
#include <oaidl.h>
#include <docobj.h>
#include <servprov.h>
typedef enum _ADDURL_FLAG {
    ADDURL_FIRST = 0,
    ADDURL_ADDTOHISTORYANDCACHE = 0,
    ADDURL_ADDTOCACHE = 1,
    ADDURL_Max = 0x7fffffff
} ADDURL_FLAG;
#ifndef __IEnumSTATURL_FWD_DEFINED__
#define __IEnumSTATURL_FWD_DEFINED__
typedef interface IEnumSTATURL IEnumSTATURL;
#endif

typedef IEnumSTATURL *LPENUMSTATURL;
typedef struct _STATURL {
    DWORD cbSize;
    LPWSTR pwcsUrl;
    LPWSTR pwcsTitle;
    FILETIME ftLastVisited;
    FILETIME ftLastUpdated;
    FILETIME ftExpires;
    DWORD dwFlags;
} STATURL;
typedef struct _STATURL *LPSTATURL;
/*****************************************************************************
 * IEnumSTATURL interface
 */
#ifndef __IEnumSTATURL_INTERFACE_DEFINED__
#define __IEnumSTATURL_INTERFACE_DEFINED__

DEFINE_GUID(IID_IEnumSTATURL, 0x3c374a42, 0xbae4, 0x11cf, 0xbf,0x7d, 0x00,0xaa,0x00,0x69,0x46,0xee);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IEnumSTATURL : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG celt,
        LPSTATURL rgelt,
        ULONG *pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        ULONG celt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(
        ) = 0;

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

    virtual HRESULT STDMETHODCALLTYPE SetFilter(
        LPCOLESTR poszFilter,
        DWORD dwFlags) = 0;

};
#else
typedef struct IEnumSTATURLVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IEnumSTATURL methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        IEnumSTATURL* This,
        ULONG celt,
        LPSTATURL rgelt,
        ULONG *pceltFetched);

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

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

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

    HRESULT (STDMETHODCALLTYPE *SetFilter)(
        IEnumSTATURL* This,
        LPCOLESTR poszFilter,
        DWORD dwFlags);

    END_INTERFACE
} IEnumSTATURLVtbl;
interface IEnumSTATURL {
    CONST_VTBL IEnumSTATURLVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IEnumSTATURL_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IEnumSTATURL_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IEnumSTATURL_Release(p) (p)->lpVtbl->Release(p)
/*** IEnumSTATURL methods ***/
#define IEnumSTATURL_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
#define IEnumSTATURL_Skip(p,a) (p)->lpVtbl->Skip(p,a)
#define IEnumSTATURL_Reset(p) (p)->lpVtbl->Reset(p)
#define IEnumSTATURL_Clone(p,a) (p)->lpVtbl->Clone(p,a)
#define IEnumSTATURL_SetFilter(p,a,b) (p)->lpVtbl->SetFilter(p,a,b)
#endif

#endif

HRESULT CALLBACK IEnumSTATURL_Next_Proxy(
    IEnumSTATURL* This,
    ULONG celt,
    LPSTATURL rgelt,
    ULONG *pceltFetched);
void __RPC_STUB IEnumSTATURL_Next_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IEnumSTATURL_Skip_Proxy(
    IEnumSTATURL* This,
    ULONG celt);
void __RPC_STUB IEnumSTATURL_Skip_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IEnumSTATURL_Reset_Proxy(
    IEnumSTATURL* This);
void __RPC_STUB IEnumSTATURL_Reset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IEnumSTATURL_Clone_Proxy(
    IEnumSTATURL* This,
    IEnumSTATURL **ppenum);
void __RPC_STUB IEnumSTATURL_Clone_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IEnumSTATURL_SetFilter_Proxy(
    IEnumSTATURL* This,
    LPCOLESTR poszFilter,
    DWORD dwFlags);
void __RPC_STUB IEnumSTATURL_SetFilter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IEnumSTATURL_INTERFACE_DEFINED__ */

#ifndef __IUrlHistoryStg_FWD_DEFINED__
#define __IUrlHistoryStg_FWD_DEFINED__
typedef interface IUrlHistoryStg IUrlHistoryStg;
#endif

typedef IUrlHistoryStg *LPURLHISTORYSTG;
/*****************************************************************************
 * IUrlHistoryStg interface
 */
#ifndef __IUrlHistoryStg_INTERFACE_DEFINED__
#define __IUrlHistoryStg_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUrlHistoryStg, 0x3c374a41, 0xbae4, 0x11cf, 0xbf,0x7d, 0x00,0xaa,0x00,0x69,0x46,0xee);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IUrlHistoryStg : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AddUrl(
        LPCOLESTR pocsUrl,
        LPCOLESTR pocsTitle,
        DWORD dwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE DeleteUrl(
        LPCOLESTR pocsUrl,
        DWORD dwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE QueryUrl(
        LPCOLESTR pocsUrl,
        DWORD dwFlags,
        LPSTATURL lpSTATURL) = 0;

    virtual HRESULT STDMETHODCALLTYPE BindToObject(
        LPCOLESTR pocsUrl,
        REFIID riid,
        void **ppvOut) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumUrls(
        IEnumSTATURL **ppEnum) = 0;

};
#else
typedef struct IUrlHistoryStgVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IUrlHistoryStg methods ***/
    HRESULT (STDMETHODCALLTYPE *AddUrl)(
        IUrlHistoryStg* This,
        LPCOLESTR pocsUrl,
        LPCOLESTR pocsTitle,
        DWORD dwFlags);

    HRESULT (STDMETHODCALLTYPE *DeleteUrl)(
        IUrlHistoryStg* This,
        LPCOLESTR pocsUrl,
        DWORD dwFlags);

    HRESULT (STDMETHODCALLTYPE *QueryUrl)(
        IUrlHistoryStg* This,
        LPCOLESTR pocsUrl,
        DWORD dwFlags,
        LPSTATURL lpSTATURL);

    HRESULT (STDMETHODCALLTYPE *BindToObject)(
        IUrlHistoryStg* This,
        LPCOLESTR pocsUrl,
        REFIID riid,
        void **ppvOut);

    HRESULT (STDMETHODCALLTYPE *EnumUrls)(
        IUrlHistoryStg* This,
        IEnumSTATURL **ppEnum);

    END_INTERFACE
} IUrlHistoryStgVtbl;
interface IUrlHistoryStg {
    CONST_VTBL IUrlHistoryStgVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IUrlHistoryStg_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IUrlHistoryStg_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IUrlHistoryStg_Release(p) (p)->lpVtbl->Release(p)
/*** IUrlHistoryStg methods ***/
#define IUrlHistoryStg_AddUrl(p,a,b,c) (p)->lpVtbl->AddUrl(p,a,b,c)
#define IUrlHistoryStg_DeleteUrl(p,a,b) (p)->lpVtbl->DeleteUrl(p,a,b)
#define IUrlHistoryStg_QueryUrl(p,a,b,c) (p)->lpVtbl->QueryUrl(p,a,b,c)
#define IUrlHistoryStg_BindToObject(p,a,b,c) (p)->lpVtbl->BindToObject(p,a,b,c)
#define IUrlHistoryStg_EnumUrls(p,a) (p)->lpVtbl->EnumUrls(p,a)
#endif

#endif

HRESULT CALLBACK IUrlHistoryStg_AddUrl_Proxy(
    IUrlHistoryStg* This,
    LPCOLESTR pocsUrl,
    LPCOLESTR pocsTitle,
    DWORD dwFlags);
void __RPC_STUB IUrlHistoryStg_AddUrl_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IUrlHistoryStg_DeleteUrl_Proxy(
    IUrlHistoryStg* This,
    LPCOLESTR pocsUrl,
    DWORD dwFlags);
void __RPC_STUB IUrlHistoryStg_DeleteUrl_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IUrlHistoryStg_QueryUrl_Proxy(
    IUrlHistoryStg* This,
    LPCOLESTR pocsUrl,
    DWORD dwFlags,
    LPSTATURL lpSTATURL);
void __RPC_STUB IUrlHistoryStg_QueryUrl_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IUrlHistoryStg_BindToObject_Proxy(
    IUrlHistoryStg* This,
    LPCOLESTR pocsUrl,
    REFIID riid,
    void **ppvOut);
void __RPC_STUB IUrlHistoryStg_BindToObject_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IUrlHistoryStg_EnumUrls_Proxy(
    IUrlHistoryStg* This,
    IEnumSTATURL **ppEnum);
void __RPC_STUB IUrlHistoryStg_EnumUrls_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IUrlHistoryStg_INTERFACE_DEFINED__ */

#ifndef __IUrlHistoryStg2_FWD_DEFINED__
#define __IUrlHistoryStg2_FWD_DEFINED__
typedef interface IUrlHistoryStg2 IUrlHistoryStg2;
#endif

typedef IUrlHistoryStg2 *LPURLHISTORYSTG2;
/*****************************************************************************
 * IUrlHistoryStg2 interface
 */
#ifndef __IUrlHistoryStg2_INTERFACE_DEFINED__
#define __IUrlHistoryStg2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUrlHistoryStg2, 0xafa0dc11, 0xc313, 0x11d0, 0x83,0x1a, 0x00,0xc0,0x4f,0xd5,0xae,0x38);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IUrlHistoryStg2 : public IUrlHistoryStg
{
    virtual HRESULT STDMETHODCALLTYPE AddUrlAndNotify(
        LPCOLESTR pocsUrl,
        LPCOLESTR pocsTitle,
        DWORD dwFlags,
        BOOL fWriteHistory,
        IOleCommandTarget *poctNotify,
        IUnknown *punkISFolder) = 0;

    virtual HRESULT STDMETHODCALLTYPE ClearHistory(
        ) = 0;

};
#else
typedef struct IUrlHistoryStg2Vtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IUrlHistoryStg methods ***/
    HRESULT (STDMETHODCALLTYPE *AddUrl)(
        IUrlHistoryStg2* This,
        LPCOLESTR pocsUrl,
        LPCOLESTR pocsTitle,
        DWORD dwFlags);

    HRESULT (STDMETHODCALLTYPE *DeleteUrl)(
        IUrlHistoryStg2* This,
        LPCOLESTR pocsUrl,
        DWORD dwFlags);

    HRESULT (STDMETHODCALLTYPE *QueryUrl)(
        IUrlHistoryStg2* This,
        LPCOLESTR pocsUrl,
        DWORD dwFlags,
        LPSTATURL lpSTATURL);

    HRESULT (STDMETHODCALLTYPE *BindToObject)(
        IUrlHistoryStg2* This,
        LPCOLESTR pocsUrl,
        REFIID riid,
        void **ppvOut);

    HRESULT (STDMETHODCALLTYPE *EnumUrls)(
        IUrlHistoryStg2* This,
        IEnumSTATURL **ppEnum);

    /*** IUrlHistoryStg2 methods ***/
    HRESULT (STDMETHODCALLTYPE *AddUrlAndNotify)(
        IUrlHistoryStg2* This,
        LPCOLESTR pocsUrl,
        LPCOLESTR pocsTitle,
        DWORD dwFlags,
        BOOL fWriteHistory,
        IOleCommandTarget *poctNotify,
        IUnknown *punkISFolder);

    HRESULT (STDMETHODCALLTYPE *ClearHistory)(
        IUrlHistoryStg2* This);

    END_INTERFACE
} IUrlHistoryStg2Vtbl;
interface IUrlHistoryStg2 {
    CONST_VTBL IUrlHistoryStg2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IUrlHistoryStg2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IUrlHistoryStg2_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IUrlHistoryStg2_Release(p) (p)->lpVtbl->Release(p)
/*** IUrlHistoryStg methods ***/
#define IUrlHistoryStg2_AddUrl(p,a,b,c) (p)->lpVtbl->AddUrl(p,a,b,c)
#define IUrlHistoryStg2_DeleteUrl(p,a,b) (p)->lpVtbl->DeleteUrl(p,a,b)
#define IUrlHistoryStg2_QueryUrl(p,a,b,c) (p)->lpVtbl->QueryUrl(p,a,b,c)
#define IUrlHistoryStg2_BindToObject(p,a,b,c) (p)->lpVtbl->BindToObject(p,a,b,c)
#define IUrlHistoryStg2_EnumUrls(p,a) (p)->lpVtbl->EnumUrls(p,a)
/*** IUrlHistoryStg2 methods ***/
#define IUrlHistoryStg2_AddUrlAndNotify(p,a,b,c,d,e,f) (p)->lpVtbl->AddUrlAndNotify(p,a,b,c,d,e,f)
#define IUrlHistoryStg2_ClearHistory(p) (p)->lpVtbl->ClearHistory(p)
#endif

#endif

HRESULT CALLBACK IUrlHistoryStg2_AddUrlAndNotify_Proxy(
    IUrlHistoryStg2* This,
    LPCOLESTR pocsUrl,
    LPCOLESTR pocsTitle,
    DWORD dwFlags,
    BOOL fWriteHistory,
    IOleCommandTarget *poctNotify,
    IUnknown *punkISFolder);
void __RPC_STUB IUrlHistoryStg2_AddUrlAndNotify_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IUrlHistoryStg2_ClearHistory_Proxy(
    IUrlHistoryStg2* This);
void __RPC_STUB IUrlHistoryStg2_ClearHistory_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IUrlHistoryStg2_INTERFACE_DEFINED__ */

#ifndef __IUrlHistoryNotify_FWD_DEFINED__
#define __IUrlHistoryNotify_FWD_DEFINED__
typedef interface IUrlHistoryNotify IUrlHistoryNotify;
#endif

typedef IUrlHistoryNotify *LPURLHISTORYNOTIFY;
/*****************************************************************************
 * IUrlHistoryNotify interface
 */
#ifndef __IUrlHistoryNotify_INTERFACE_DEFINED__
#define __IUrlHistoryNotify_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUrlHistoryNotify, 0xbc40bec1, 0xc493, 0x11d0, 0x83,0x1b, 0x00,0xc0,0x4f,0xd5,0xae,0x38);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IUrlHistoryNotify : public IOleCommandTarget
{
};
#else
typedef struct IUrlHistoryNotifyVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IOleCommandTarget methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryStatus)(
        IUrlHistoryNotify* This,
        const GUID *pguidCmdGroup,
        ULONG cCmds,
        OLECMD prgCmds[],
        OLECMDTEXT *pCmdText);

    HRESULT (STDMETHODCALLTYPE *Exec)(
        IUrlHistoryNotify* This,
        const GUID *pguidCmdGroup,
        DWORD nCmdID,
        DWORD nCmdexecopt,
        VARIANT *pvaIn,
        VARIANT *pvaOut);

    END_INTERFACE
} IUrlHistoryNotifyVtbl;
interface IUrlHistoryNotify {
    CONST_VTBL IUrlHistoryNotifyVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IUrlHistoryNotify_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IUrlHistoryNotify_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IUrlHistoryNotify_Release(p) (p)->lpVtbl->Release(p)
/*** IOleCommandTarget methods ***/
#define IUrlHistoryNotify_QueryStatus(p,a,b,c,d) (p)->lpVtbl->QueryStatus(p,a,b,c,d)
#define IUrlHistoryNotify_Exec(p,a,b,c,d,e) (p)->lpVtbl->Exec(p,a,b,c,d,e)
#endif

#endif


#endif  /* __IUrlHistoryNotify_INTERFACE_DEFINED__ */

/* Begin additional prototypes for all interfaces */


/* End additional prototypes */

#ifdef __cplusplus
}
#endif
#endif /* __WIDL_URLHIST_H */
