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.
345 lines
9.1 KiB
345 lines
9.1 KiB
//////////////////////////////////////////////////////////////////
|
|
// ioReadyMin.h
|
|
//
|
|
// The include file for minimum IomegaReady 3.0.
|
|
//
|
|
// Copyright (C) 1998 Iomega Corp.
|
|
//
|
|
//////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef __iomegaReady_h__
|
|
#define __iomegaReady_h__
|
|
|
|
#if defined(macintosh) || defined(_MAC)
|
|
#define IOREADY_MAC 1
|
|
#define IOREADY_WIN 0
|
|
#endif
|
|
|
|
#if defined(_WIN32) || defined(_MSC_VER)
|
|
#define IOREADY_MAC 0
|
|
#define IOREADY_WIN 1
|
|
#endif
|
|
|
|
#ifdef DllInterface
|
|
#undef DllInterface
|
|
#endif
|
|
|
|
#if IOREADY_WIN
|
|
|
|
#ifndef _WINDOWS_
|
|
#pragma message ( __FILE__ ": error: include <windows.h> before including \"ioReadyMin.h\"")
|
|
#endif // _WINDOWS_
|
|
|
|
#ifdef __Building_iomegaReady_Dll__
|
|
#define DllInterface __declspec( dllexport )
|
|
#define STRICT 1
|
|
#elif defined __Building_iomegaReady_Lib__
|
|
#define DllInterface
|
|
#define STRICT 1
|
|
bool InitializeIoReady();
|
|
#elif defined __Using_iomegaReady_Lib__
|
|
#define DllInterface
|
|
bool InitializeIoReady();
|
|
#else
|
|
#define DllInterface __declspec( dllimport )
|
|
#endif
|
|
|
|
#pragma warning(disable:4786) // disable function name truncation warning
|
|
#pragma warning(disable:4251) // disable dll interface warning
|
|
|
|
#else // IOREADY_MAC
|
|
|
|
#define DllInterface
|
|
|
|
#endif // IOREADY_WIN/IOREADY_MAC block
|
|
|
|
#if IOREADY_MAC
|
|
|
|
typedef UInt32 CRITICAL_SECTION;
|
|
typedef PicHandle HBITMAP;
|
|
typedef Handle HICON;
|
|
typedef Handle HANDLE;
|
|
typedef RGBColor COLORREF;
|
|
typedef HFileInfo WIN32_FIND_DATA;
|
|
|
|
typedef void* LPVOID;
|
|
typedef bool BOOL;
|
|
typedef UInt8 BYTE;
|
|
typedef UInt16 WORD;
|
|
typedef UInt32 DWORD;
|
|
typedef UInt64 QWord;
|
|
|
|
#define MAX_PATH 32
|
|
|
|
extern void InitializeCriticalSection(CRITICAL_SECTION*);
|
|
extern void DeleteCriticalSection(CRITICAL_SECTION*);
|
|
extern void EnterCriticalSection(CRITICAL_SECTION*);
|
|
extern void LeaveCriticalSection(CRITICAL_SECTION*);
|
|
|
|
#endif // IOREADY_MAC
|
|
|
|
|
|
#pragma pack( push, ioReadyPack, 8 )
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// ioReady namespace
|
|
//
|
|
namespace ioReady {
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// forward class declarations
|
|
//
|
|
class DllInterface Drive;
|
|
class DllInterface Disk;
|
|
class DllInterface Adapter;
|
|
class DriveImp;
|
|
class DiskImp;
|
|
class CoreOSImp;
|
|
class AdapterInfo;
|
|
|
|
/////////////////////////////////////////////////////////////////
|
|
// constants for ioReady
|
|
//
|
|
const int ct_nMaxFamilyLength = 128; // max for family description strings
|
|
const int ct_nSerialNumberLength = 19; // min needed for getMediaSerialNumber, includes space for NULL
|
|
const int ct_nExtendedSerialNumberLength = 41;
|
|
// min needed for getExtendedMediaSerialNumber, includes space for NULL
|
|
const int ct_nMaxAdapterAttributes = 3; // current max number of attributes
|
|
const int ct_nAdapterAttributeLength = 64; // min needed for getAttribute strings
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// Enumerations
|
|
//
|
|
// Any drives added must be added as bit flags
|
|
// Enumed this way so the DriveArray, etc objects can take as argument
|
|
// Future use Iomega value is now 0x00E0
|
|
//
|
|
enum EDriveFamily
|
|
{
|
|
eAnyFamily = 0xFFFF,
|
|
eIomegaFamily = 0x00FF,
|
|
eInvalidFamily = 0x0000,
|
|
eZip = 0x0001,
|
|
eJaz = 0x0002,
|
|
eClik = 0x0004,
|
|
ePacifica = 0x0008,
|
|
eOtherIomegaFamily = 0x0010,
|
|
eFloppyFamily = 0x0100,
|
|
eHardDriveFamily = 0x0200,
|
|
eCDRomFamily = 0x0400,
|
|
eNetworkFamily = 0x0800,
|
|
eGenericFamily = 0x1000,
|
|
eRemovableFamily = 0x2000,
|
|
eRamFamily = 0x4000,
|
|
eIomegaCDFamily = 0x8000
|
|
};
|
|
|
|
enum EDriveSubFamily
|
|
{
|
|
eInvalidSubFamily=0, eZip100=1, eZip250=2, eJaz1=3,
|
|
eJaz2=4, eClik40=5, ePacifica2=6, eOtherIomegaSubFamily=7,
|
|
eHardDriveSubFamily=8, eRemovableSubFamily=9, eFloppySubFamily=10,
|
|
eCDRomSubFamily=11, eNetworkSubFamily=12, eGenericSubFamily=13,
|
|
eRamSubFamily=14, eIomegaCDSubFamily=15
|
|
};
|
|
|
|
enum EDriveModel
|
|
{
|
|
eInvalidModel=0, eZip100Plus=1, eZip100Scsi=2,
|
|
eZip100PPort=3, eZip100Atapi=4, eZip100IDE=5, eJaz1Scsi=6,
|
|
eJaz2Scsi=7, eClik40Atapi=8, ePacifica2GScsi=9, eOtherIomegaModel=10,
|
|
eHardDriveModel=11, eRemovableModel=12, eFloppyModel=13, eCDRomModel=14,
|
|
eNetworkModel=15, eGenericModel=16, eZip250PPort=17, eZip250Scsi=18,
|
|
eZip250Atapi=19, eRamModel=20, eClik40PPort=21, eZip100Usb=22,
|
|
eZipCDModel=23, eClik40PCCard=24, eZip250Usb=25, eZip250PCCard=26,
|
|
eClik40USB = 27
|
|
};
|
|
|
|
enum EMediaType
|
|
{
|
|
eInvalidDisk=0, eNoDiskInserted=1, eZip100Disk=2,
|
|
eJaz1Disk=3, eJaz2Disk=4, eHardDisk=5, eNetworkDisk=6, eFloppyDisk=7,
|
|
eRemovableDisk=8, eCDRomDisk=9, eGenericDisk=10, eOtherIomegaDisk=11,
|
|
eZip250Disk=12, eClik40Disk=13, ePacifica2GDisk=14, eRamDisk=15,
|
|
eZipCDDisk=16, ePacifica1GDisk=17
|
|
};
|
|
|
|
enum EAdapter
|
|
{
|
|
eUnknownAdapter=0, eParallelPort=1, eScsi=2, eAtapi=3, eIDE=4, eUSB=5, e1394=6, ePCCard=7
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// error enums
|
|
//
|
|
enum EError
|
|
{
|
|
eNoError =0, eNotImplemented=1, eNotApplicable=2, eNoDisk=3,
|
|
eWrongDiskType=4, eNotFormatted=5, eReadWriteProtectedError=6, eWriteProtectedError=7,
|
|
eDiskErrorReading=8, eDiskErrorWriting=9, eOSLockAlreadyOnDisk=10,
|
|
eDriveInUse=11, eCritical=12, eQuickVerifyFormatNotAllowed=13,
|
|
eSurfaceVerifyFormatNotAllowed=14, eNeedsSurfaceVerifyFormat=15, eStringLengthExceeded=16,
|
|
eLowMemory=17, eCannotDelete=18, eCannotMakeRemovable=19,
|
|
eUserCancel=20, eInvalidStateChange=21, eIncorrectPassword=22,
|
|
eOutOfRange=23, ePasswordRequired=24, eNotRemovable=25,
|
|
ePasswordTooLong=26, eProtected=27, eSystemDisk=28, eBootDisk=29,
|
|
eUnableCopySystemFiles=30, eUnableLabelVolume=31, eIssueFormatFailed=32,
|
|
eFormatInProgress=33, eInvalidParameter=34, eEjectInProgress=35
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// Drive class
|
|
//
|
|
class DllInterface Drive
|
|
{
|
|
|
|
public:
|
|
Drive( int drvNum );
|
|
Drive( char c );
|
|
~Drive();
|
|
|
|
// identification functions
|
|
int getDrvNum();
|
|
bool isIomegaDrive();
|
|
bool isIomegaCDDrive();
|
|
|
|
// more identification functions
|
|
EDriveFamily getFamily();
|
|
EDriveSubFamily getSubFamily();
|
|
EDriveModel getModel();
|
|
const char *getFamilyText( );
|
|
const char *getSubFamilyText( );
|
|
const char *getModelText( );
|
|
|
|
// disk functions
|
|
bool hasDisk();
|
|
Disk& getDisk();
|
|
|
|
|
|
protected:
|
|
DriveImp* m_pImp;
|
|
|
|
private:
|
|
// helper function for constructors
|
|
void create( int drvNum );
|
|
void createIomegaDrive( CoreOSImp *pCore );
|
|
void createIomegaDrive( CoreOSImp *pCore, char *szInquiry );
|
|
void createNonIomegaDrive( CoreOSImp *pCore );
|
|
|
|
|
|
Drive &operator=( const Drive &drive); // no assignment operator
|
|
Drive( const Drive & ); // no copy constructor
|
|
};
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// DiskIface class
|
|
// Interface only, not exported, pure virtual class
|
|
//
|
|
class DllInterface DiskIface
|
|
{
|
|
public:
|
|
// disk identification functions
|
|
virtual EMediaType getMediaType() = 0;
|
|
virtual const char *getMediaSerialNumber() = 0;
|
|
|
|
};
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// Disk class
|
|
//
|
|
class DllInterface Disk : public DiskIface
|
|
{
|
|
public:
|
|
~Disk();
|
|
|
|
// disk identification functions
|
|
EMediaType getMediaType();
|
|
const char *getMediaSerialNumber( ); // unique serial number
|
|
const char *getExtendedMediaSerialNumber(); // longer unique serial number
|
|
|
|
protected:
|
|
// user accesses through getDisk()
|
|
Disk( DriveImp *pDriveImp );
|
|
|
|
private:
|
|
// state functions
|
|
void updateDiskPresence();
|
|
void updateDiskIdentity();
|
|
|
|
DriveImp *m_pDriveImp;
|
|
DiskImp *m_pImp;
|
|
|
|
Disk &operator=( const Disk &disk); // no assignment operator
|
|
Disk( const Disk & ); // no copy constructor
|
|
|
|
friend class DriveImp;
|
|
};
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// Adapter class
|
|
//
|
|
class AttribListImp;
|
|
|
|
class DllInterface Adapter
|
|
{
|
|
public:
|
|
virtual ~Adapter();
|
|
|
|
EAdapter getType();
|
|
const char *getName( );
|
|
const char *getMiniportDriverName( );
|
|
|
|
virtual bool getAttribute( int index, char *szLabel, char *szValue, int nLength );
|
|
virtual int getAttributeCount();
|
|
|
|
static Adapter *createAdapter( EAdapter eType, AdapterInfo& attrib );
|
|
|
|
protected:
|
|
// user access Adapter through getAdapter call
|
|
Adapter( EAdapter eAdapter, const char *szName );
|
|
|
|
virtual void initializeAttributes();
|
|
|
|
EAdapter m_eType;
|
|
|
|
char *m_pszName;
|
|
char *m_pszMiniportDriverName;
|
|
AttribListImp *m_pAttribList;
|
|
bool m_bAttrInitialized;
|
|
|
|
private:
|
|
Adapter& operator=( const Adapter& adapter); // no assignment operator
|
|
Adapter( const Adapter& ); // no copy constructor
|
|
|
|
friend void Drive::createIomegaDrive( CoreOSImp *pCore );
|
|
friend class DriveImp;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// ScsiAdapter class
|
|
//
|
|
class DllInterface ScsiAdapter : public Adapter
|
|
{
|
|
public:
|
|
int getScsiId();
|
|
|
|
protected:
|
|
// user access Adapter through getAdapter call
|
|
ScsiAdapter( EAdapter eAdapter, const char *szName, int nScsiId );
|
|
virtual void initializeAttributes();
|
|
|
|
private:
|
|
int m_nScsiId;
|
|
|
|
friend class Adapter;
|
|
};
|
|
|
|
|
|
} // end of ioReady namespace
|
|
|
|
#pragma pack( pop, ioReadyPack )
|
|
|
|
#endif // __iomegaReady_h__
|