windows-nt/Source/XPSP1/NT/base/fs/hsm/rms/server/rmspartn.h
2020-09-26 16:20:57 +08:00

126 lines
3.6 KiB
C++

/*++
© 1998 Seagate Software, Inc. All rights reserved
Module Name:
RmsPartn.h
Abstract:
Declaration of the CRmsPartition class
Author:
Brian Dodd [brian] 19-Nov-1996
Revision History:
--*/
#ifndef _RMSPARTN_
#define _RMSPARTN_
#include "resource.h" // resource symbols
#include "RmsObjct.h" // CRmsComObject
#include "RmsSInfo.h" // CRmsStorageInfo
/*++
Class Name:
CRmsPartition
Class Description:
A CRmsPartition represents a partition on a tape or a single side of
a unit of optical media. This object keeps on-media identification
information, and various statistics about the Partition including:
capacity, free space, number of physical mounts issued for the
particular Partition, and the amount of data read or written for the
Partition.
--*/
class CRmsPartition :
public CComDualImpl<IRmsPartition, &IID_IRmsPartition, &LIBID_RMSLib>,
public CRmsStorageInfo, // inherits CRmsComObject
public CWsbObject, // inherits CComObjectRoot
public CComCoClass<CRmsPartition,&CLSID_CRmsPartition>
{
public:
CRmsPartition() {}
BEGIN_COM_MAP(CRmsPartition)
COM_INTERFACE_ENTRY2(IDispatch, IRmsPartition)
COM_INTERFACE_ENTRY(IRmsPartition)
COM_INTERFACE_ENTRY(IRmsComObject)
COM_INTERFACE_ENTRY(IRmsStorageInfo)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
COM_INTERFACE_ENTRY2(IPersist, IPersistStream)
COM_INTERFACE_ENTRY(IPersistStream)
COM_INTERFACE_ENTRY(IWsbCollectable)
// COM_INTERFACE_ENTRY(IWsbPersistable)
COM_INTERFACE_ENTRY(IWsbTestable)
END_COM_MAP()
DECLARE_REGISTRY_RESOURCEID(IDR_RmsPartition)
// CComObjectRoot
public:
STDMETHOD(FinalConstruct)(void);
// IPersist
public:
STDMETHOD(GetClassID)(CLSID *pClsid);
// IPersistStream
public:
STDMETHOD(GetSizeMax)(ULARGE_INTEGER* pSize);
STDMETHOD(Load)(IStream* pStream);
STDMETHOD(Save)(IStream* pStream, BOOL clearDirty);
// IWsbCollectable
public:
STDMETHOD(CompareTo)(IUnknown* pCollectable, SHORT* pResult);
WSB_FROM_CWSBOBJECT;
// IWsbTestable
public:
STDMETHOD(Test)(USHORT *pPassed, USHORT *pFailed);
// IRmsPartition
public:
STDMETHOD(GetPartNo)(LONG *pPartNo);
STDMETHOD(GetAttributes)(LONG *pAttr);
STDMETHOD(SetAttributes)(LONG attr);
STDMETHOD(GetIdentifier)(UCHAR *pIdent, SHORT *pSize);
STDMETHOD(SetIdentifier)(UCHAR *pIdent, SHORT size);
STDMETHOD(GetStorageInfo)(IRmsStorageInfo **ptr);
STDMETHOD(VerifyIdentifier)(void);
STDMETHOD(ReadOnMediaId)(UCHAR *pId, LONG *pSize);
private:
enum { // Class specific constants:
//
Version = 1, // Class version, this should be
// incremented each time the
// the class definition changes.
MaxId = 64, // The maximum size of the on-media ID.
// Note: this restritiction should
// be eliminated when the DB records
// are variable length.
}; //
LONG m_partNo; // The partition number or side.
RmsAttribute m_attributes; // Partition attributes (see RmsAttributes).
SHORT m_sizeofIdentifier; // The size of the on-media identifier.
UCHAR m_pIdentifier[MaxId]; // The on-media identifier.
};
#endif // _RMSPARTN_