|
|
#pragma once
//+------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1994 - 1998.
//
// File: tnupdr.hxx
//
//+------------------------------------------------------------------
DECLARE_DEBUG(updr);
#if DBG == 1
#define updrAssert(e) Win4Assert(e)
#define updrVerify(e) Win4Assert(e)
#define updrDebug(x) updrInlineDebugOut x
// updrDebugOut is called from the Chk/Err macros
#define updrDebugOut(x) updrInlineDebugOut x
#else
#define updrAssert(e)
#define updrVerify(e) (e)
#define updrDebug(x)
#endif
#define updrErr(l, e) ErrJmp(updr, l, e, sc)
#define updrChkTo(l, e) if (FAILED(sc = (e))) updrErr(l, sc) else 1
#define updrChk(e) updrChkTo(EH_Err, e)
#define updrHChkTo(l, e) if (FAILED(sc = DfGetScode(e))) updrErr(l, sc) else 1
#define updrHChk(e) updrHChkTo(EH_Err, e)
#define updrMemTo(l, e) \
if ((e) == NULL) updrErr(l, STG_E_INSUFFICIENTMEMORY) else 1 #define updrMem(e) updrMemTo(EH_Err, e)
// +----------------------------------------------------------------------
// Thumbnail Updater Class
// +----------------------------------------------------------------------
class CTNUpdater: public IFilterStatus, public IOplockStorage { friend HRESULT CThumbnailCF_CreateInstance( IUnknown*, REFIID, void** );
public: // IUnknown
STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void); STDMETHODIMP QueryInterface(REFIID iid, void **ppv);
public: // IFilterStatus
STDMETHODIMP Initialize( /* [string][in] */ const WCHAR __RPC_FAR *pwszCatalogName, /* [string][in] */ const WCHAR __RPC_FAR *pwszCatalogPath); STDMETHODIMP PreFilter( /* [string][in] */ const WCHAR __RPC_FAR *pwszPath); STDMETHODIMP FilterLoad( /* [string][in] */ const WCHAR __RPC_FAR *pwszPath, /* [in] */ SCODE scFilterStatus); STDMETHODIMP PostFilter( /* [string][in] */ const WCHAR __RPC_FAR *pwszPath, /* [in] */ SCODE scFilterStatus);
public: // IOplockStorage
#define STGM_OPLOCKS_DONT_WORK (STGM_TRANSACTED | STGM_SIMPLE | STGM_PRIORITY)
STDMETHODIMP CreateStorageEx(LPCWSTR pwcsName, DWORD grfMode, DWORD stgfmt, DWORD grfAttrs, REFIID riid, void ** ppstgOpen);
STDMETHODIMP OpenStorageEx(LPCWSTR pwcsName, DWORD grfMode, DWORD stgfmt, DWORD grfAttrs, REFIID riid, void ** ppstgOpen);
public: // C++ Methods
CTNUpdater(void); ~CTNUpdater(void);
private: // Non-Interface Methods
BOOL ObjectInit(); BOOL HasAnImageFileExtension(LPCWSTR pwszPath); HRESULT GetImageFileExtensions(); HRESULT AddToTempExtensionList(WCHAR* pwszExtension); HRESULT FreeTempExtensionList(); HRESULT GetAFileNameExtension(WCHAR* pwszKeyName, WCHAR** ppwszExtension);
struct TEMPEXTLIST { WCHAR* pwszExtension; struct TEMPEXTLIST* pNext; };
private: // Data
ULONG m_cRef; IThumbnailExtractor* m_pITE; HKEY m_hkeyMime; HANDLE m_hEvRegNotify; WCHAR** m_ppwszExtensions; TEMPEXTLIST* m_pTempList; };
|