/*++ Copyright (c) 1998 Seagate Software, Inc. All rights reserved. Module Name: medinfo.h Abstract: Declaration of class CMedInfo Author: Revision History: --*/ #include "resource.h" // main symbols #include "engine.h" // main symbols #include "Wsb.h" // Wsb Collectable Class #include "wsbdb.h" #include "metalib.h" // Meta database typedef struct _HSM_MEDIA_MASTER { GUID id; //HSM Engine Media ID GUID ntmsId; //HSM RMS/NTMS Media ID GUID storagePoolId; //Storage Pool ID CWsbStringPtr description; //Display name - RS generated CWsbStringPtr name; //Barcode on media or NTMS generated //name HSM_JOB_MEDIA_TYPE type; //Type of media (HSM) FILETIME lastUpdate; //Last update of copy HRESULT lastError; //S_OK or the last exception //..encountered when accessing //..the media BOOL recallOnly; //True if no more data is to //..be premigrated to the media //..Set by internal operations, //..may not be changed externally LONGLONG freeBytes; //Real free space on media LONGLONG capacity; //Total capacity of media SHORT nextRemoteDataSet; //Next remote data set } HSM_MEDIA_MASTER, *PHSM_MEDIA_MASTER; typedef struct _HSM_MEDIA_COPY { GUID id; //HSM RMS/NTMS Media ID of copy CWsbStringPtr description; //RS generated name of copy (display name) CWsbStringPtr name; //Barcode or NTMS generated name of copy FILETIME lastUpdate; //Last update of copy HRESULT lastError; //S_OK or the last exception //..encountered when accessing //..the media SHORT nextRemoteDataSet; //The next remote data set of the media //..master that was copied } HSM_MEDIA_COPY, *PHSM_MEDIA_COPY; ///////////////////////////////////////////////////////////////////////////// // Task class CMediaInfo : public CWsbDbEntity, public IMediaInfo, public CComCoClass { public: CMediaInfo() {} BEGIN_COM_MAP(CMediaInfo) COM_INTERFACE_ENTRY(IMediaInfo) COM_INTERFACE_ENTRY2(IWsbDbEntity, CWsbDbEntity) COM_INTERFACE_ENTRY(IWsbDbEntityPriv) COM_INTERFACE_ENTRY(IPersistStream) COM_INTERFACE_ENTRY(IWsbCollectable) // COM_INTERFACE_ENTRY(IWsbPersistable) COM_INTERFACE_ENTRY(IWsbTestable) END_COM_MAP() DECLARE_REGISTRY(CMediaInfo, _T("Task.MediaInfo.1"), _T("Task.MediaInfo"), IDS_MEDIAINFO_DESC, THREADFLAGS_BOTH) // IMediaInfo public: STDMETHOD(FinalConstruct)(void); void FinalRelease(void); // IWsbDbEntity public: STDMETHOD(Print)(IStream* pStream); STDMETHOD(UpdateKey)(IWsbDbKey *pKey); WSB_FROM_CWSBDBENTITY; // IPersist public: STDMETHOD(GetClassID)(LPCLSID pClsid); // IPersistStream public: STDMETHOD(GetSizeMax)(ULARGE_INTEGER* pSize); STDMETHOD(Load)(IStream* pStream); STDMETHOD(Save)(IStream* pStream, BOOL clearDirty); // IWsbTestable public: STDMETHOD(Test)(USHORT *pTestsPassed, USHORT* pTestsFailed); //*/ // IMediaInfo public: STDMETHOD( GetCapacity )( LONGLONG *pCapacity ); STDMETHOD( GetCopyDescription ) ( USHORT copyNumber, OLECHAR **pDescription, ULONG bufferSize); STDMETHOD( GetCopyInfo )( USHORT copyNumber, GUID *pMediaSubsystemId, OLECHAR **pDescription, ULONG descriptionBufferSize, OLECHAR **pName, ULONG nameBufferSize, FILETIME *pUpdate, HRESULT *pLastError, SHORT *pNextRemoteDataSet ); STDMETHOD( GetCopyLastError )( USHORT copyNumber, HRESULT *pLastError ); STDMETHOD( GetCopyMediaSubsystemId )( USHORT copyNumber, GUID *pMediaSubsystemId ); STDMETHOD( GetCopyName )( USHORT copyNumber, OLECHAR **pName, ULONG bufferSize); STDMETHOD( GetCopyNextRemoteDataSet )( USHORT copyNumber, SHORT *pNextRemoteDataSet); STDMETHOD( GetCopyUpdate )( USHORT copyNumber, FILETIME *pUpdate ); STDMETHOD( GetDescription )(OLECHAR **pDescription, ULONG buffsize ); STDMETHOD( GetFreeBytes )( LONGLONG *pFreeBytes); STDMETHOD( GetId )( GUID *pId); STDMETHOD( GetLastError )( HRESULT *pLastError); STDMETHOD( GetLastKnownGoodMasterInfo )( GUID* pMediaId, GUID *pMediaSubsystemId, GUID *pStoragePoolId, LONGLONG *pFreeBytes, LONGLONG *pCapacity, HRESULT *pLastError, OLECHAR **pDescription, ULONG descriptionBufferSize, HSM_JOB_MEDIA_TYPE *pType, OLECHAR **pName, ULONG nameBufferSize, BOOL *pReadOnly, FILETIME *pUpdate, SHORT *pNextRemoteDataSet); STDMETHOD( GetLKGMasterNextRemoteDataSet )( SHORT *pNextRemoteDataSet ); STDMETHOD( GetLogicalValidBytes )( LONGLONG *pLogicalValidBytes); STDMETHOD( GetMediaInfo )( GUID* pMediaId, GUID *pMediaSubsystemId, GUID *pStoragePoolId, LONGLONG *pFreeBytes, LONGLONG *pCapacity, HRESULT *pLastError, SHORT *pNextRemoteDataSet, OLECHAR **pDescription, ULONG descriptionBufferSize, HSM_JOB_MEDIA_TYPE *pType, OLECHAR **pName, ULONG nameBufferSize, BOOL *pReadOnly, FILETIME *pUpdate, LONGLONG *pLogicalValidBytes, BOOL *pRecreate); STDMETHOD( GetMediaSubsystemId )( GUID *pRmsMediaId ); STDMETHOD( GetName )( OLECHAR **pName, ULONG bufferSize); STDMETHOD( GetNextRemoteDataSet )( SHORT *pNextRemoteDataSet ); STDMETHOD( GetRecallOnlyStatus )( BOOL *pRecallOnlyStatus ); STDMETHOD( GetRecreate )( BOOL *pRecreate ); STDMETHOD( GetStoragePoolId )( GUID *pStoragePoolId ); STDMETHOD( GetType )( HSM_JOB_MEDIA_TYPE *pType ); STDMETHOD( GetUpdate)( FILETIME *pUpdate ); STDMETHOD( SetCapacity )( LONGLONG capacity); STDMETHOD( SetCopyDescription ) ( USHORT copyNumber, OLECHAR *name); STDMETHOD( SetCopyInfo )( USHORT copyNumber, GUID mediaSubsystemId, OLECHAR *description, OLECHAR *name, FILETIME update, HRESULT lastError, SHORT nextRemoteDataSet ); STDMETHOD( SetCopyLastError )( USHORT copyNumber, HRESULT lastError ); STDMETHOD( SetCopyMediaSubsystemId )( USHORT copyNumber, GUID mediaSybsystemMediaId ); STDMETHOD( SetCopyName )( USHORT copyNumber, OLECHAR *barCode); STDMETHOD( SetCopyNextRemoteDataSet )( USHORT copyNumber, SHORT nextRemoteDataSet); STDMETHOD( SetCopyUpdate )( USHORT copyNumber, FILETIME update ); STDMETHOD( SetDescription )(OLECHAR *description); STDMETHOD( SetFreeBytes )( LONGLONG FreeBytes ); STDMETHOD( SetId )( GUID id); STDMETHOD( SetLastError )( HRESULT lastError); STDMETHOD( SetLastKnownGoodMasterInfo )( GUID mediaId, GUID mediaSubsystemMediaId, GUID storagePoolId, LONGLONG FreeBytes, LONGLONG Capacity, HRESULT lastError, OLECHAR *description, HSM_JOB_MEDIA_TYPE type, OLECHAR *name, BOOL ReadOnly, FILETIME update, SHORT nextRemoteDataSet); STDMETHOD( SetLogicalValidBytes )( LONGLONG logicalValidBytes); STDMETHOD( SetMediaInfo )( GUID mediaId, GUID mediaSubsystemMediaId, GUID storagePoolId, LONGLONG FreeBytes, LONGLONG Capacity, HRESULT lastError, SHORT nextRemoteDataSet, OLECHAR *description, HSM_JOB_MEDIA_TYPE type, OLECHAR *name, BOOL ReadOnly, FILETIME update, LONGLONG logicalValidBytes, BOOL recreate); STDMETHOD( SetMediaSubsystemId )( GUID rmsMediaId ); STDMETHOD( SetName )( OLECHAR *barCode); STDMETHOD( SetNextRemoteDataSet )( SHORT nextRemoteDataSet ); STDMETHOD( SetRecallOnlyStatus )( BOOL readOnlyStatus ); STDMETHOD( SetRecreate )( BOOL recreate ); STDMETHOD( SetStoragePoolId )( GUID storagePoolId ); STDMETHOD( SetType )( HSM_JOB_MEDIA_TYPE type ); STDMETHOD( SetUpdate)( FILETIME update ); STDMETHOD( DeleteCopy)( USHORT copyNumber ); STDMETHOD( RecreateMaster )( void ); STDMETHOD( UpdateLastKnownGoodMaster )( void ); private: // // Helper functions // STDMETHOD( WriteToDatabase )( void ); HSM_MEDIA_MASTER m_Master; //Media master information BOOL m_Recreate; //True if the master is to //..be recreated - no more //..data is migrated to //..media in this state. //..May be set through the //..UI and changed when //..master is recreated. LONGLONG m_LogicalValidBytes; //Amount of valid data if //..space reclamation were //..to occur. HSM_MEDIA_MASTER m_LastKnownGoodMaster; //Last known good media //..master information HSM_MEDIA_COPY m_Copy[HSM_MAX_NUMBER_MEDIA_COPIES]; //Media copy information };