Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//+================================================================
//
// File: CMoniker.hxx
//
// Purpose: This file declares the CMoniker class.
// This class manages a file moniker.
//
//+================================================================
#ifndef _C_MONIKER_HXX_
#define _C_MONIKER_HXX_
// --------
// Includes
// --------
#include "CDir.hxx"
// --------
// CMoniker
// --------
class CMoniker {
// (De)Construction
public:
CMoniker(); ~CMoniker();
// Public member routines.
public:
BOOL GetTemporaryStorageTime( FILETIME *); BOOL Initialize( const CDirectory& cDirectoryOriginal, const CDirectory& cDirectoryFinal ); BOOL CreateFileMonikerEx( DWORD dwTrackFlags = 0L ); BOOL SaveDeleteLoad(); BOOL ComposeWith(); BOOL Reduce( DWORD dwDelay, IMoniker** ppmkReduced = NULL ); BOOL GetDisplayName( WCHAR * wszDisplayName, IMoniker* pmnkCaller = NULL ); BOOL GetTimeOfLastChange( FILETIME *ft ); BOOL BindToStorage(); BOOL BindToObject();
BOOL CreateTemporaryStorage(); BOOL RenameTemporaryStorage(); BOOL DeleteTemporaryStorage();
const WCHAR * GetTemporaryStorageName() const; IBindCtx* GetBindCtx() const; BOOL TouchTemporaryStorage(); HRESULT GetHResult() const; void SuppressErrorMessages( BOOL bSuppress ); BOOL InitializeBindContext( );
// Private member routines.
private:
BOOL CreateLinkTrackingRegistryKey(); BOOL OpenLinkTrackingRegistryKey(); BOOL CloseLinkTrackingRegistryKey(); void DisplayErrors( BOOL bSuccess, WCHAR * wszFunctionName ) const;
// Private data members
private:
WCHAR m_wszSystemTempPath[ MAX_PATH + sizeof( L'\0' ) ]; WCHAR m_wszTemporaryStorage[ MAX_PATH + sizeof( L'\0' ) ];
IMoniker* m_pIMoniker; IBindCtx* m_pIBindCtx; IStorage* m_pIStorage;
WCHAR m_wszErrorMessage[ 100 ]; DWORD m_dwTrackFlags; BOOL m_bSuppressErrorMessages;
const CDirectory* m_pcDirectoryOriginal; const CDirectory* m_pcDirectoryFinal;
// The following key, along with being a usable handle, is a flag
// which indicates if we need to restore the data in the registry.
HKEY m_hkeyLinkTracking;
// Note that m_hr is used for more than just HRESULTs, sometimes
// it is used for other errors as well.
HRESULT m_hr;
};
// --------------
// Inline Members
// --------------
#define OUTFILE stdout
// CMoniker::DisplayErrors
inline void CMoniker::DisplayErrors( BOOL bSuccess, WCHAR * wszFunctionName ) const { if( !bSuccess && !m_bSuppressErrorMessages ) { fwprintf( OUTFILE, L"Error in %s (%08x)\n %s\n", wszFunctionName, m_hr, m_wszErrorMessage ); } }
// CMoniker::GetTemporaryStorage
inline const WCHAR * CMoniker::GetTemporaryStorageName() const { return m_wszTemporaryStorage; }
// CMoniker::GetBindCtx
inline IBindCtx* CMoniker::GetBindCtx() const { return( m_pIBindCtx ); }
// CMoniker::GetHResult
inline HRESULT CMoniker::GetHResult() const { return( m_hr ); }
// CMoniker::SuppressErrorMessages
inline void CMoniker::SuppressErrorMessages( BOOL bSuppress ) { // Normalize to TRUE or FALSE
m_bSuppressErrorMessages = bSuppress ? TRUE : FALSE; }
// ------
// Macros
// ------
#define DEFAULT_TRACK_FLAGS ( TRACK_LOCALONLY )
#define EXIT_ON_FAILED( error ) if( FAILED( m_hr )) \
{\ wcscpy( m_wszErrorMessage, ##error );\ goto Exit;\ }
#undef EXIT
#define EXIT( error ) \
{\ wcscpy( m_wszErrorMessage, ##error );\ goto Exit;\ }
#endif // _C_MONIKER_HXX_
|