Leaked source code of windows server 2003
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

//////////////////////////////////////////////////////////////////
// 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__