205 lines
7.1 KiB
C++
205 lines
7.1 KiB
C++
/*++
|
|
|
|
© 1998 Seagate Software, Inc. All rights reserved
|
|
|
|
Module Name:
|
|
|
|
RmsLibry.h
|
|
|
|
Abstract:
|
|
|
|
Declaration of the CRmsLibrary class
|
|
|
|
Author:
|
|
|
|
Brian Dodd [brian] 15-Nov-1996
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#ifndef _RMSLIBRY_
|
|
#define _RMSLIBRY_
|
|
|
|
#include "resource.h" // resource symbols
|
|
|
|
#include "RmsObjct.h" // CRmsComObject
|
|
|
|
/*++
|
|
|
|
Class Name:
|
|
|
|
CRmsLibrary
|
|
|
|
Class Description:
|
|
|
|
A CRmsLibrary represents the multi-device complex that includes:
|
|
|
|
zero or more medium changers,
|
|
|
|
zero or more drive classes,
|
|
|
|
zero or more drives,
|
|
|
|
zero or more storage slots,
|
|
|
|
zero or more staging slots,
|
|
|
|
zero or more I/E ports,
|
|
|
|
zero or more cleaning cartridges,
|
|
|
|
zero or more scratch cartridges,
|
|
|
|
zero or more media sets.
|
|
|
|
But, at least one.
|
|
|
|
--*/
|
|
|
|
class CRmsLibrary :
|
|
public CComDualImpl<IRmsLibrary, &IID_IRmsLibrary, &LIBID_RMSLib>,
|
|
public CRmsComObject,
|
|
public CWsbObject, // inherits CComObjectRoot
|
|
public CComCoClass<CRmsLibrary,&CLSID_CRmsLibrary>
|
|
{
|
|
public:
|
|
CRmsLibrary() {}
|
|
BEGIN_COM_MAP(CRmsLibrary)
|
|
COM_INTERFACE_ENTRY2(IDispatch, IRmsLibrary)
|
|
COM_INTERFACE_ENTRY(IRmsLibrary)
|
|
COM_INTERFACE_ENTRY(IRmsComObject)
|
|
COM_INTERFACE_ENTRY(ISupportErrorInfo)
|
|
COM_INTERFACE_ENTRY2(IPersist, IPersistStream)
|
|
COM_INTERFACE_ENTRY(IPersistStream)
|
|
COM_INTERFACE_ENTRY(IWsbCollectable)
|
|
COM_INTERFACE_ENTRY(IWsbPersistStream)
|
|
COM_INTERFACE_ENTRY(IWsbTestable)
|
|
END_COM_MAP()
|
|
|
|
DECLARE_REGISTRY_RESOURCEID(IDR_RmsLibrary)
|
|
|
|
// 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);
|
|
|
|
// IRmsLibrary
|
|
public:
|
|
STDMETHOD(GetLibraryId)(GUID *pLibraryId);
|
|
STDMETHOD(SetLibraryId)(GUID libraryId);
|
|
|
|
STDMETHOD( GetName )( BSTR *pName );
|
|
STDMETHOD( SetName )( BSTR name );
|
|
|
|
STDMETHOD(GetMediaSupported)(LONG *pType);
|
|
STDMETHOD(SetMediaSupported)(LONG type);
|
|
|
|
STDMETHOD(GetMaxChangers)(LONG *pNum);
|
|
STDMETHOD(SetMaxChangers)(LONG num);
|
|
|
|
STDMETHOD(GetMaxDrives)(LONG *pNum);
|
|
STDMETHOD(SetMaxDrives)(LONG num);
|
|
|
|
STDMETHOD(GetMaxPorts)(LONG *pNum);
|
|
STDMETHOD(SetMaxPorts)(LONG num);
|
|
|
|
STDMETHOD(GetMaxSlots)(LONG *pNum);
|
|
STDMETHOD(SetMaxSlots)(LONG num);
|
|
|
|
STDMETHOD(GetNumUsedSlots)(LONG *pNum);
|
|
|
|
STDMETHOD(GetNumStagingSlots)(LONG *pNum);
|
|
STDMETHOD(SetNumStagingSlots)(LONG num);
|
|
|
|
STDMETHOD(GetNumScratchCarts)(LONG *pNum);
|
|
STDMETHOD(SetNumScratchCarts)(LONG num);
|
|
|
|
STDMETHOD(GetNumUnknownCarts)(LONG *pNum);
|
|
STDMETHOD(SetNumUnknownCarts)(LONG num);
|
|
|
|
STDMETHOD(SetIsMagazineSupported)(BOOL flag);
|
|
STDMETHOD(IsMagazineSupported)(void);
|
|
|
|
STDMETHOD(GetMaxCleaningMounts)(LONG *pNum);
|
|
STDMETHOD(SetMaxCleaningMounts)(LONG num);
|
|
|
|
STDMETHOD(GetSlotSelectionPolicy)(LONG *pNum);
|
|
STDMETHOD(SetSlotSelectionPolicy)(LONG num);
|
|
|
|
STDMETHOD(GetChangers)(IWsbIndexedCollection **ptr);
|
|
STDMETHOD(GetDriveClasses)(IWsbIndexedCollection **ptr);
|
|
STDMETHOD(GetDrives)(IWsbIndexedCollection **ptr);
|
|
STDMETHOD(GetStorageSlots)(IWsbIndexedCollection **ptr);
|
|
STDMETHOD(GetStagingSlots)(IWsbIndexedCollection **ptr);
|
|
STDMETHOD(GetPorts)(IWsbIndexedCollection **ptr);
|
|
STDMETHOD(GetCleaningCartridges)(IWsbIndexedCollection **ptr);
|
|
STDMETHOD(GetScratchCartridges)(IWsbIndexedCollection **ptr);
|
|
STDMETHOD(GetMediaSets)(IWsbIndexedCollection **ptr);
|
|
|
|
STDMETHOD( Audit )( LONG start, LONG count, BOOL verify, BOOL unknownOnly, BOOL mountWait, LPOVERLAPPED pOverlapped, LONG *pRequest );
|
|
|
|
|
|
protected:
|
|
|
|
enum { // Class specific constants:
|
|
//
|
|
Version = 1, // Class version, this should be
|
|
// incremented each time the
|
|
// the class definition changes.
|
|
}; //
|
|
RmsMedia m_mediaSupported; // The type of media supported by a
|
|
// a Drive, usually one type, but
|
|
// can be a combination of media
|
|
// types for multi-function devices
|
|
// (i.e. drives that support Optical,
|
|
// WORM, and CDR).
|
|
LONG m_maxChangers; // The total number of medium changers contained
|
|
// within the Library.
|
|
LONG m_maxDrives; // The total number of drives contained
|
|
// within the Library.
|
|
LONG m_maxPorts; // The total number of I/E ports contained
|
|
// within the Library.
|
|
LONG m_maxSlots; // The total number of storage slots
|
|
// contained within the library.
|
|
LONG m_NumUsedSlots; // The number of occupied storage slots.
|
|
LONG m_NumStagingSlots; // The number of slots used for staging area.
|
|
LONG m_NumScratchCarts; // The amount of scratch media available.
|
|
LONG m_NumUnknownCarts; // The number of units of media
|
|
// having unknown status.
|
|
BOOL m_isMagazineSupported; // If TRUE, the library supports magazines.
|
|
LONG m_maxCleaningMounts; // The max number of mounts per cleaning
|
|
// cartridge.
|
|
RmsSlotSelect m_slotSelectionPolicy; // The storage slot selection policy
|
|
// to use (see RmsSlotSelect).
|
|
CComPtr<IWsbIndexedCollection> m_pChangers; // The changers associates with the Library.
|
|
CComPtr<IWsbIndexedCollection> m_pDriveClasses; // The drive classes associates with the Library.
|
|
CComPtr<IWsbIndexedCollection> m_pDrives; // The drives associates with the Library.
|
|
CComPtr<IWsbIndexedCollection> m_pStorageSlots; // The storage slots associates with the Library.
|
|
CComPtr<IWsbIndexedCollection> m_pStagingSlots; // The staging slots associates with the Library.
|
|
CComPtr<IWsbIndexedCollection> m_pPorts; // The I/E ports associated with the Library.
|
|
CComPtr<IWsbIndexedCollection> m_pCleaningCartridges; // The cleaning cartridges associated with the Library.
|
|
CComPtr<IWsbIndexedCollection> m_pScratchCartridges; // The scratch cartridges associated with the Library.
|
|
CComPtr<IWsbIndexedCollection> m_pMediaSets; // The media sets associated with the Library.
|
|
};
|
|
|
|
#endif // _RMSLIBRY_
|