

/* this ALWAYS GENERATED file contains the definitions for the interfaces */


 /* File created by MIDL compiler version 7.00.0555 */
/* Compiler settings for thumbcache.idl:
    Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555 
    protocol : dce , ms_ext, c_ext, robust
    error checks: allocation ref bounds_check enum stub_data 
    VC __declspec() decoration level: 
         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
         DECLSPEC_UUID(), MIDL_INTERFACE()
*/
/* @@MIDL_FILE_HEADING(  ) */

#pragma warning( disable: 4049 )  /* more than 64k source lines */


/* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 500
#endif

/* verify that the <rpcsal.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCSAL_H_VERSION__
#define __REQUIRED_RPCSAL_H_VERSION__ 100
#endif

#include "rpc.h"
#include "rpcndr.h"

#ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h>
#endif // __RPCNDR_H_VERSION__

#ifndef COM_NO_WINDOWS_H
#include "windows.h"
#include "ole2.h"
#endif /*COM_NO_WINDOWS_H*/

#ifndef __thumbcache_h__
#define __thumbcache_h__

#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

/* Forward Declarations */ 

#ifndef __ISharedBitmap_FWD_DEFINED__
#define __ISharedBitmap_FWD_DEFINED__
typedef interface ISharedBitmap ISharedBitmap;
#endif 	/* __ISharedBitmap_FWD_DEFINED__ */


#ifndef __IThumbnailCache_FWD_DEFINED__
#define __IThumbnailCache_FWD_DEFINED__
typedef interface IThumbnailCache IThumbnailCache;
#endif 	/* __IThumbnailCache_FWD_DEFINED__ */


#ifndef __IThumbnailProvider_FWD_DEFINED__
#define __IThumbnailProvider_FWD_DEFINED__
typedef interface IThumbnailProvider IThumbnailProvider;
#endif 	/* __IThumbnailProvider_FWD_DEFINED__ */


#ifndef __LocalThumbnailCache_FWD_DEFINED__
#define __LocalThumbnailCache_FWD_DEFINED__

#ifdef __cplusplus
typedef class LocalThumbnailCache LocalThumbnailCache;
#else
typedef struct LocalThumbnailCache LocalThumbnailCache;
#endif /* __cplusplus */

#endif 	/* __LocalThumbnailCache_FWD_DEFINED__ */


#ifndef __SharedBitmap_FWD_DEFINED__
#define __SharedBitmap_FWD_DEFINED__

#ifdef __cplusplus
typedef class SharedBitmap SharedBitmap;
#else
typedef struct SharedBitmap SharedBitmap;
#endif /* __cplusplus */

#endif 	/* __SharedBitmap_FWD_DEFINED__ */


/* header files for imported files */
#include "oaidl.h"
#include "shtypes.h"
#include "shobjidl.h"

#ifdef __cplusplus
extern "C"{
#endif 


/* interface __MIDL_itf_thumbcache_0000_0000 */
/* [local] */ 

typedef /* [v1_enum] */ 
enum WTS_FLAGS
    {	WTS_EXTRACT	= 0,
	WTS_INCACHEONLY	= 0x1,
	WTS_FASTEXTRACT	= 0x2,
	WTS_FORCEEXTRACTION	= 0x4,
	WTS_SLOWRECLAIM	= 0x8,
	WTS_EXTRACTDONOTCACHE	= 0x20,
	WTS_SCALETOREQUESTEDSIZE	= 0x40,
	WTS_SKIPFASTEXTRACT	= 0x80,
	WTS_EXTRACTINPROC	= 0x100
    } 	WTS_FLAGS;

DEFINE_ENUM_FLAG_OPERATORS(WTS_FLAGS)
typedef /* [v1_enum] */ 
enum WTS_CACHEFLAGS
    {	WTS_DEFAULT	= 0,
	WTS_LOWQUALITY	= 0x1,
	WTS_CACHED	= 0x2
    } 	WTS_CACHEFLAGS;

DEFINE_ENUM_FLAG_OPERATORS(WTS_CACHEFLAGS)
typedef /* [v1_enum] */ 
enum WTS_ALPHATYPE
    {	WTSAT_UNKNOWN	= 0,
	WTSAT_RGB	= 1,
	WTSAT_ARGB	= 2
    } 	WTS_ALPHATYPE;

typedef struct WTS_THUMBNAILID
    {
    BYTE rgbKey[ 16 ];
    } 	WTS_THUMBNAILID;

#define WTS_E_FAILEDEXTRACTION MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xB200)


extern RPC_IF_HANDLE __MIDL_itf_thumbcache_0000_0000_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_thumbcache_0000_0000_v0_0_s_ifspec;

#ifndef __ISharedBitmap_INTERFACE_DEFINED__
#define __ISharedBitmap_INTERFACE_DEFINED__

/* interface ISharedBitmap */
/* [object][unique][uuid] */ 


EXTERN_C const IID IID_ISharedBitmap;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("091162a4-bc96-411f-aae8-c5122cd03363")
    ISharedBitmap : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetSharedBitmap( 
            /* [out] */ __RPC__deref_out_opt HBITMAP *phbm) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetSize( 
            /* [out] */ __RPC__out SIZE *pSize) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetFormat( 
            /* [out] */ __RPC__out WTS_ALPHATYPE *pat) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE InitializeBitmap( 
            /* [in] */ __RPC__in HBITMAP hbm,
            /* [in] */ WTS_ALPHATYPE wtsAT) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Detach( 
            /* [out] */ __RPC__deref_out_opt HBITMAP *phbm) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ISharedBitmapVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in ISharedBitmap * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in ISharedBitmap * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in ISharedBitmap * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetSharedBitmap )( 
            __RPC__in ISharedBitmap * This,
            /* [out] */ __RPC__deref_out_opt HBITMAP *phbm);
        
        HRESULT ( STDMETHODCALLTYPE *GetSize )( 
            __RPC__in ISharedBitmap * This,
            /* [out] */ __RPC__out SIZE *pSize);
        
        HRESULT ( STDMETHODCALLTYPE *GetFormat )( 
            __RPC__in ISharedBitmap * This,
            /* [out] */ __RPC__out WTS_ALPHATYPE *pat);
        
        HRESULT ( STDMETHODCALLTYPE *InitializeBitmap )( 
            __RPC__in ISharedBitmap * This,
            /* [in] */ __RPC__in HBITMAP hbm,
            /* [in] */ WTS_ALPHATYPE wtsAT);
        
        HRESULT ( STDMETHODCALLTYPE *Detach )( 
            __RPC__in ISharedBitmap * This,
            /* [out] */ __RPC__deref_out_opt HBITMAP *phbm);
        
        END_INTERFACE
    } ISharedBitmapVtbl;

    interface ISharedBitmap
    {
        CONST_VTBL struct ISharedBitmapVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ISharedBitmap_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ISharedBitmap_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ISharedBitmap_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ISharedBitmap_GetSharedBitmap(This,phbm)	\
    ( (This)->lpVtbl -> GetSharedBitmap(This,phbm) ) 

#define ISharedBitmap_GetSize(This,pSize)	\
    ( (This)->lpVtbl -> GetSize(This,pSize) ) 

#define ISharedBitmap_GetFormat(This,pat)	\
    ( (This)->lpVtbl -> GetFormat(This,pat) ) 

#define ISharedBitmap_InitializeBitmap(This,hbm,wtsAT)	\
    ( (This)->lpVtbl -> InitializeBitmap(This,hbm,wtsAT) ) 

#define ISharedBitmap_Detach(This,phbm)	\
    ( (This)->lpVtbl -> Detach(This,phbm) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ISharedBitmap_INTERFACE_DEFINED__ */


#ifndef __IThumbnailCache_INTERFACE_DEFINED__
#define __IThumbnailCache_INTERFACE_DEFINED__

/* interface IThumbnailCache */
/* [uuid][object] */ 


EXTERN_C const IID IID_IThumbnailCache;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("F676C15D-596A-4ce2-8234-33996F445DB1")
    IThumbnailCache : public IUnknown
    {
    public:
        virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetThumbnail( 
            /* [in] */ IShellItem *pShellItem,
            /* [in] */ UINT cxyRequestedThumbSize,
            /* [in] */ WTS_FLAGS flags,
            /* [out] */ ISharedBitmap **ppvThumb,
            /* [annotation][unique][out] */ 
            __out_opt  WTS_CACHEFLAGS *pOutFlags,
            /* [annotation][unique][out] */ 
            __out_opt  WTS_THUMBNAILID *pThumbnailID) = 0;
        
        virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetThumbnailByID( 
            /* [in] */ WTS_THUMBNAILID thumbnailID,
            /* [in] */ UINT cxyRequestedThumbSize,
            /* [out] */ ISharedBitmap **ppvThumb,
            /* [annotation][unique][out] */ 
            __out_opt  WTS_CACHEFLAGS *pOutFlags) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IThumbnailCacheVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IThumbnailCache * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IThumbnailCache * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IThumbnailCache * This);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *GetThumbnail )( 
            IThumbnailCache * This,
            /* [in] */ IShellItem *pShellItem,
            /* [in] */ UINT cxyRequestedThumbSize,
            /* [in] */ WTS_FLAGS flags,
            /* [out] */ ISharedBitmap **ppvThumb,
            /* [annotation][unique][out] */ 
            __out_opt  WTS_CACHEFLAGS *pOutFlags,
            /* [annotation][unique][out] */ 
            __out_opt  WTS_THUMBNAILID *pThumbnailID);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *GetThumbnailByID )( 
            IThumbnailCache * This,
            /* [in] */ WTS_THUMBNAILID thumbnailID,
            /* [in] */ UINT cxyRequestedThumbSize,
            /* [out] */ ISharedBitmap **ppvThumb,
            /* [annotation][unique][out] */ 
            __out_opt  WTS_CACHEFLAGS *pOutFlags);
        
        END_INTERFACE
    } IThumbnailCacheVtbl;

    interface IThumbnailCache
    {
        CONST_VTBL struct IThumbnailCacheVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IThumbnailCache_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IThumbnailCache_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IThumbnailCache_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IThumbnailCache_GetThumbnail(This,pShellItem,cxyRequestedThumbSize,flags,ppvThumb,pOutFlags,pThumbnailID)	\
    ( (This)->lpVtbl -> GetThumbnail(This,pShellItem,cxyRequestedThumbSize,flags,ppvThumb,pOutFlags,pThumbnailID) ) 

#define IThumbnailCache_GetThumbnailByID(This,thumbnailID,cxyRequestedThumbSize,ppvThumb,pOutFlags)	\
    ( (This)->lpVtbl -> GetThumbnailByID(This,thumbnailID,cxyRequestedThumbSize,ppvThumb,pOutFlags) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [call_as] */ HRESULT STDMETHODCALLTYPE IThumbnailCache_RemoteGetThumbnail_Proxy( 
    __RPC__in IThumbnailCache * This,
    /* [in] */ __RPC__in_opt IShellItem *pShellItem,
    /* [in] */ UINT cxyRequestedThumbSize,
    /* [in] */ WTS_FLAGS flags,
    /* [out] */ __RPC__deref_out_opt ISharedBitmap **ppvThumb,
    /* [out] */ __RPC__out WTS_CACHEFLAGS *pOutFlags,
    /* [out] */ __RPC__out WTS_THUMBNAILID *pThumbnailID);


void __RPC_STUB IThumbnailCache_RemoteGetThumbnail_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [call_as] */ HRESULT STDMETHODCALLTYPE IThumbnailCache_RemoteGetThumbnailByID_Proxy( 
    __RPC__in IThumbnailCache * This,
    /* [in] */ WTS_THUMBNAILID thumbnailID,
    /* [in] */ UINT cxyRequestedThumbSize,
    /* [out] */ __RPC__deref_out_opt ISharedBitmap **ppvThumb,
    /* [out] */ __RPC__out WTS_CACHEFLAGS *pOutFlags);


void __RPC_STUB IThumbnailCache_RemoteGetThumbnailByID_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IThumbnailCache_INTERFACE_DEFINED__ */


#ifndef __IThumbnailProvider_INTERFACE_DEFINED__
#define __IThumbnailProvider_INTERFACE_DEFINED__

/* interface IThumbnailProvider */
/* [object][uuid] */ 


EXTERN_C const IID IID_IThumbnailProvider;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("e357fccd-a995-4576-b01f-234630154e96")
    IThumbnailProvider : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetThumbnail( 
            /* [in] */ UINT cx,
            /* [out] */ __RPC__deref_out_opt HBITMAP *phbmp,
            /* [out] */ __RPC__out WTS_ALPHATYPE *pdwAlpha) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IThumbnailProviderVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IThumbnailProvider * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IThumbnailProvider * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IThumbnailProvider * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetThumbnail )( 
            __RPC__in IThumbnailProvider * This,
            /* [in] */ UINT cx,
            /* [out] */ __RPC__deref_out_opt HBITMAP *phbmp,
            /* [out] */ __RPC__out WTS_ALPHATYPE *pdwAlpha);
        
        END_INTERFACE
    } IThumbnailProviderVtbl;

    interface IThumbnailProvider
    {
        CONST_VTBL struct IThumbnailProviderVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IThumbnailProvider_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IThumbnailProvider_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IThumbnailProvider_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IThumbnailProvider_GetThumbnail(This,cx,phbmp,pdwAlpha)	\
    ( (This)->lpVtbl -> GetThumbnail(This,cx,phbmp,pdwAlpha) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IThumbnailProvider_INTERFACE_DEFINED__ */



#ifndef __ThumbCacheLib_LIBRARY_DEFINED__
#define __ThumbCacheLib_LIBRARY_DEFINED__

/* library ThumbCacheLib */
/* [uuid] */ 


EXTERN_C const IID LIBID_ThumbCacheLib;

EXTERN_C const CLSID CLSID_LocalThumbnailCache;

#ifdef __cplusplus

class DECLSPEC_UUID("50EF4544-AC9F-4A8E-B21B-8A26180DB13F")
LocalThumbnailCache;
#endif

EXTERN_C const CLSID CLSID_SharedBitmap;

#ifdef __cplusplus

class DECLSPEC_UUID("4db26476-6787-4046-b836-e8412a9e8a27")
SharedBitmap;
#endif
#endif /* __ThumbCacheLib_LIBRARY_DEFINED__ */

/* Additional Prototypes for ALL interfaces */

unsigned long             __RPC_USER  HBITMAP_UserSize(     __RPC__in unsigned long *, unsigned long            , __RPC__in HBITMAP * ); 
unsigned char * __RPC_USER  HBITMAP_UserMarshal(  __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in HBITMAP * ); 
unsigned char * __RPC_USER  HBITMAP_UserUnmarshal(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out HBITMAP * ); 
void                      __RPC_USER  HBITMAP_UserFree(     __RPC__in unsigned long *, __RPC__in HBITMAP * ); 

unsigned long             __RPC_USER  HBITMAP_UserSize64(     __RPC__in unsigned long *, unsigned long            , __RPC__in HBITMAP * ); 
unsigned char * __RPC_USER  HBITMAP_UserMarshal64(  __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in HBITMAP * ); 
unsigned char * __RPC_USER  HBITMAP_UserUnmarshal64(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out HBITMAP * ); 
void                      __RPC_USER  HBITMAP_UserFree64(     __RPC__in unsigned long *, __RPC__in HBITMAP * ); 

/* [local] */ HRESULT STDMETHODCALLTYPE IThumbnailCache_GetThumbnail_Proxy( 
    IThumbnailCache * This,
    /* [in] */ IShellItem *pShellItem,
    /* [in] */ UINT cxyRequestedThumbSize,
    /* [in] */ WTS_FLAGS flags,
    /* [out] */ ISharedBitmap **ppvThumb,
    /* [annotation][unique][out] */ 
    __out_opt  WTS_CACHEFLAGS *pOutFlags,
    /* [annotation][unique][out] */ 
    __out_opt  WTS_THUMBNAILID *pThumbnailID);


/* [call_as] */ HRESULT STDMETHODCALLTYPE IThumbnailCache_GetThumbnail_Stub( 
    __RPC__in IThumbnailCache * This,
    /* [in] */ __RPC__in_opt IShellItem *pShellItem,
    /* [in] */ UINT cxyRequestedThumbSize,
    /* [in] */ WTS_FLAGS flags,
    /* [out] */ __RPC__deref_out_opt ISharedBitmap **ppvThumb,
    /* [out] */ __RPC__out WTS_CACHEFLAGS *pOutFlags,
    /* [out] */ __RPC__out WTS_THUMBNAILID *pThumbnailID);

/* [local] */ HRESULT STDMETHODCALLTYPE IThumbnailCache_GetThumbnailByID_Proxy( 
    IThumbnailCache * This,
    /* [in] */ WTS_THUMBNAILID thumbnailID,
    /* [in] */ UINT cxyRequestedThumbSize,
    /* [out] */ ISharedBitmap **ppvThumb,
    /* [annotation][unique][out] */ 
    __out_opt  WTS_CACHEFLAGS *pOutFlags);


/* [call_as] */ HRESULT STDMETHODCALLTYPE IThumbnailCache_GetThumbnailByID_Stub( 
    __RPC__in IThumbnailCache * This,
    /* [in] */ WTS_THUMBNAILID thumbnailID,
    /* [in] */ UINT cxyRequestedThumbSize,
    /* [out] */ __RPC__deref_out_opt ISharedBitmap **ppvThumb,
    /* [out] */ __RPC__out WTS_CACHEFLAGS *pOutFlags);



/* end of Additional Prototypes */

#ifdef __cplusplus
}
#endif

#endif



