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.
110 lines
3.2 KiB
110 lines
3.2 KiB
#ifndef _MCT_H
|
|
#define _MCT_H
|
|
|
|
typedef DWORD MCT_STATUS;
|
|
|
|
VOID
|
|
mctDebugPrint(
|
|
ULONG DebugPrintLevel,
|
|
PCHAR DebugMessage,
|
|
...
|
|
);
|
|
|
|
//
|
|
// Switch chars for calling Changer IOCTLs
|
|
//
|
|
#define INIT_ELEMENT_STATUS 'i'
|
|
#define GET_ELEMENT_STATUS 'e'
|
|
#define GET_PARAMETERS 'p'
|
|
#define GET_STATUS 's'
|
|
#define GET_PRODUCT_DATA 'd'
|
|
#define SET_ACCESS 'a'
|
|
#define SET_POSITION 'o'
|
|
#define EXCHANGE_MEDIUM 'x'
|
|
#define MOVE_MEDIUM 'm'
|
|
#define REINITIALIZE_TRANSPORT 'r'
|
|
#define QUERY_VOLUME_TAG 'q'
|
|
|
|
//
|
|
// Changer Element Types
|
|
//
|
|
#define CHANGER_ALL_ELEMENTS 'A'
|
|
#define CHANGER_SLOT 'S'
|
|
#define CHANGER_DRIVE 'D'
|
|
#define CHANGER_TRANSPORT 'T'
|
|
#define CHANGER_KEYPAD 'K'
|
|
#define CHANGER_IEPORT 'I'
|
|
#define CHANGER_DOOR 'O'
|
|
|
|
//
|
|
// Control codes for SetAccess
|
|
//
|
|
#define CHANGER_EXTEND_IEPORT 'E'
|
|
#define CHANGER_RETRACT_IEPORT 'R'
|
|
#define CHANGER_LOCK_ELEMENT 'L'
|
|
#define CHANGER_UNLOCK_ELEMENT 'U'
|
|
|
|
//
|
|
// MCT_STATUS Codes
|
|
//
|
|
#define MCT_STATUS_SUCCESS 0
|
|
#define MCT_STATUS_FAILED 1
|
|
|
|
#define PRINT_MOVE_CAPABILITIES(Element, Name) \
|
|
if ((Element) != 0) { \
|
|
printf("\n Changer can move from %s to :\n", Name); \
|
|
if ((Element) & CHANGER_TO_TRANSPORT) \
|
|
printf("\t\t Transport\n"); \
|
|
if ((Element) & CHANGER_TO_SLOT) \
|
|
printf("\t\t Slot\n"); \
|
|
if ((Element) & CHANGER_TO_IEPORT) \
|
|
printf("\t\t IEPort\n"); \
|
|
if ((Element) & CHANGER_TO_DRIVE) \
|
|
printf("\t\t Drive\n"); \
|
|
printf("\n"); \
|
|
}
|
|
|
|
#define PRINT_EXCHANGE_CAPABILITIES(Element, Name) \
|
|
if ((Element) != 0) { \
|
|
printf("\n Changer can exchange between %s and :\n", Name); \
|
|
if ((Element) & CHANGER_TO_TRANSPORT) \
|
|
printf("\t\t Transport\n"); \
|
|
if ((Element) & CHANGER_TO_SLOT) \
|
|
printf("\t\t Slot\n"); \
|
|
if ((Element) & CHANGER_TO_IEPORT) \
|
|
printf("\t\t IEPort\n"); \
|
|
if ((Element) & CHANGER_TO_DRIVE) \
|
|
printf("\t\t Drive\n"); \
|
|
printf("\n"); \
|
|
}
|
|
|
|
#define PRINT_LOCK_UNLOCK_CAPABILITY(Value, Element, Name) \
|
|
if ((Value) & Element) { \
|
|
printf(" Changer is Capable of Locking\\Unlocking %s.\n", Name); \
|
|
}
|
|
|
|
#define PRINT_POSITION_CAPABILITY(Value, Element, Name) \
|
|
if ((Value) & Element) { \
|
|
printf(" Changer is Capable of positioning transport to %s.\n", Name); \
|
|
}
|
|
|
|
//
|
|
// Function prototypes
|
|
//
|
|
VOID mctPrintUsage();
|
|
BOOLEAN mctOpenChanger();
|
|
VOID mctCloseChanger();
|
|
MCT_STATUS mctInitElementStatus();
|
|
MCT_STATUS mctGetElementStatus(CHAR, USHORT);
|
|
MCT_STATUS mctGetParameters(BOOLEAN);
|
|
MCT_STATUS mctGetStatus();
|
|
MCT_STATUS mctGetProductData();
|
|
MCT_STATUS mctSetAccess(CHAR, USHORT, CHAR);
|
|
MCT_STATUS mctSetPosition(CHAR, USHORT);
|
|
MCT_STATUS mctExchangeMedium(CHAR, USHORT, CHAR, USHORT,
|
|
CHAR, USHORT, CHAR, USHORT);
|
|
MCT_STATUS mctMoveMedium(CHAR, USHORT, CHAR, USHORT, CHAR, USHORT);
|
|
MCT_STATUS mctReinitTransport();
|
|
MCT_STATUS mctQueryVolumeTag();
|
|
|
|
#endif // _MCT_H
|