/*++ Copyright (c) 1992 Microsoft Corporation Module Name: 4mmdat.h Abstract: This file contains structures and defines that are used specifically for the tape drivers. Author: Lori Brown (Maynard) Revision History: --*/ // // Defines for Log Sense Pages // #define LOGSENSEPAGE0 0x00 #define LOGSENSEPAGE2 0x02 #define LOGSENSEPAGE3 0x03 #define LOGSENSEPAGE30 0x30 #define LOGSENSEPAGE31 0x31 // // Defined Log Sense Page Header // typedef struct _LOG_SENSE_PAGE_HEADER { UCHAR PageCode : 6; UCHAR Reserved1 : 2; UCHAR Reserved2; UCHAR Length[2]; // [0]=MSB ... [1]=LSB } LOG_SENSE_PAGE_HEADER, *PLOG_SENSE_PAGE_HEADER; // // Defined Log Sense Parameter Header // typedef struct _LOG_SENSE_PARAMETER_HEADER { UCHAR ParameterCode[2]; // [0]=MSB ... [1]=LSB UCHAR LPBit : 1; UCHAR Reserved1 : 1; UCHAR TMCBit : 2; UCHAR ETCBit : 1; UCHAR TSDBit : 1; UCHAR DSBit : 1; UCHAR DUBit : 1; UCHAR ParameterLength; } LOG_SENSE_PARAMETER_HEADER, *PLOG_SENSE_PARAMETER_HEADER; // // Defined Log Page Information - statistical values, accounts // for maximum parameter values that is returned for each page // typedef struct _LOG_SENSE_PAGE_INFORMATION { union { struct { UCHAR Page0; UCHAR Page2; UCHAR Page3; UCHAR Page30; UCHAR Page31; } PageData ; struct { LOG_SENSE_PARAMETER_HEADER Parm1; UCHAR TotalRewrites[2]; LOG_SENSE_PARAMETER_HEADER Parm2; UCHAR TotalErrorCorrected[3]; LOG_SENSE_PARAMETER_HEADER Parm3; UCHAR NotApplicable[2]; // Always 0 LOG_SENSE_PARAMETER_HEADER Parm4; UCHAR TotalBytesProcessed[4]; LOG_SENSE_PARAMETER_HEADER Parm5; UCHAR TotalUnrecoverableErrors[2]; LOG_SENSE_PARAMETER_HEADER Parm6; UCHAR RewritesLastReadOp[2]; } Page2 ; struct { LOG_SENSE_PARAMETER_HEADER Parm1; UCHAR TotalRereads[2]; LOG_SENSE_PARAMETER_HEADER Parm2; UCHAR TotalErrorCorrected[3]; LOG_SENSE_PARAMETER_HEADER Parm3; UCHAR TotalCorrectableECCC3[2]; LOG_SENSE_PARAMETER_HEADER Parm4; UCHAR TotalBytesProcessed[4]; LOG_SENSE_PARAMETER_HEADER Parm5; UCHAR TotalUnrecoverableErrors[2]; LOG_SENSE_PARAMETER_HEADER Parm6; UCHAR RereadsLastWriteOp[2]; } Page3 ; struct { LOG_SENSE_PARAMETER_HEADER Parm1; UCHAR CurrentGroupsWritten[3]; LOG_SENSE_PARAMETER_HEADER Parm2; UCHAR CurrentRewrittenFrames[2]; LOG_SENSE_PARAMETER_HEADER Parm3; UCHAR CurrentGroupsRead[3]; LOG_SENSE_PARAMETER_HEADER Parm4; UCHAR CurrentECCC3Corrections[2]; LOG_SENSE_PARAMETER_HEADER Parm5; UCHAR PreviousGroupsWritten[3]; LOG_SENSE_PARAMETER_HEADER Parm6; UCHAR PreviousRewrittenFrames[2]; LOG_SENSE_PARAMETER_HEADER Parm7; UCHAR PreviousGroupsRead[3]; LOG_SENSE_PARAMETER_HEADER Parm8; UCHAR PreviousECCC3Corrections[2]; LOG_SENSE_PARAMETER_HEADER Parm9; UCHAR TotalGroupsWritten[4]; LOG_SENSE_PARAMETER_HEADER Parm10; UCHAR TotalRewritteFrames[3]; LOG_SENSE_PARAMETER_HEADER Parm11; UCHAR TotalGroupsRead[4]; LOG_SENSE_PARAMETER_HEADER Parm12; UCHAR TotalECCC3Corrections[3]; LOG_SENSE_PARAMETER_HEADER Parm13; UCHAR LoadCount[2]; } Page30 ; struct { LOG_SENSE_PARAMETER_HEADER Parm1; UCHAR RemainingCapacityPart0[4]; LOG_SENSE_PARAMETER_HEADER Parm2; UCHAR RemainingCapacityPart1[4]; LOG_SENSE_PARAMETER_HEADER Parm3; UCHAR MaximumCapacityPart0[4]; LOG_SENSE_PARAMETER_HEADER Parm4; UCHAR MaximumCapacityPart1[4]; } Page31 ; } LogSensePage; } LOG_SENSE_PAGE_INFORMATION, *PLOG_SENSE_PAGE_INFORMATION; // // Defined Log Sense Parameter Format - statistical values, accounts // for maximum parameter values that is returned // typedef struct _LOG_SENSE_PARAMETER_FORMAT { LOG_SENSE_PAGE_HEADER LogSenseHeader; LOG_SENSE_PAGE_INFORMATION LogSensePageInfo; } LOG_SENSE_PARAMETER_FORMAT, *PLOG_SENSE_PARAMETER_FORMAT;