windows-nt/Source/XPSP1/NT/drivers/storage/tape/inc/wmi.h
2020-09-26 16:20:57 +08:00

216 lines
5.4 KiB
C

/*+++
Copyright (c) 1999 Microsoft Corporation
Module Name:
wmi.h
Abstract:
This file contains structures and defines for WMI
that are used by minidrivers.
Revision History:
---*/
// begin_ntminitape
//
// LOG SENSE Page codes
//
#define TapeAlertLogPage 0x2E
//
// Type of tape drive alert information
// supported by the drive.
// For example, if the type is TapeAlertInfoNone, the drive doesn't
// support any alert info. Need to use read\write error counters
// to predict drive problems. If the type is TapeAlertInfoRequestSense,
// request sense command can be used to determine drive problems.
//
typedef enum _TAPE_ALERT_INFO_TYPE {
TapeAlertInfoNone,
TapeAlertInfoRequestSense,
TapeAlertInfoLogPage
} TAPE_ALERT_INFO_TYPE;
//
// Tape alert information
//
#define READ_WARNING 1
#define WRITE_WARNING 2
#define HARD_ERROR 3
#define MEDIA_ERROR 4
#define READ_FAILURE 5
#define WRITE_FAILURE 6
#define MEDIA_LIFE 7
#define NOT_DATA_GRADE 8
#define WRITE_PROTECT 9
#define NO_REMOVAL 10
#define CLEANING_MEDIA 11
#define UNSUPPORTED_FORMAT 12
#define SNAPPED_TAPE 13
#define CLEAN_NOW 20
#define CLEAN_PERIODIC 21
#define EXPIRED_CLEANING_MEDIA 22
#define HARDWARE_A 30
#define HARDWARE_B 31
#define INTERFACE_ERROR 32
#define EJECT_MEDIA 33
#define DOWNLOAD_FAIL 34
//
// The following structs are duplicated from wmidata.h
// wmidata.h is generated from wmicore.mof file. Should
// the MOF file change for these structs, the corresponding
// change should be made in these structs also.
// Since minidrivers do not have access wmidata.h, we need
// to duplicate it here.
//
// ISSUE : 02/28/2000 - nramas : Should find a better way to
// handle the above. Duplication will cause problems in keeping
// these definitions in sync.
//
typedef struct _WMI_TAPE_DRIVE_PARAMETERS
{
// Maximum block size supported
ULONG MaximumBlockSize;
// Minimum block size supported
ULONG MinimumBlockSize;
// Default block size supported
ULONG DefaultBlockSize;
// Maximum number of partitions allowed.
ULONG MaximumPartitionCount;
// TRUE if drive supports compression.
BOOLEAN CompressionCapable;
// TRUE if compression is enabled.
BOOLEAN CompressionEnabled;
// TRUE if drive reports setmarks
BOOLEAN ReportSetmarks;
// TRUE if drive supports hardware error correction
BOOLEAN HardwareErrorCorrection;
} WMI_TAPE_DRIVE_PARAMETERS, *PWMI_TAPE_DRIVE_PARAMETERS;
typedef struct _WMI_TAPE_MEDIA_PARAMETERS
{
// Maximum capacity of the media
ULONGLONG MaximumCapacity;
// Available capacity of the media
ULONGLONG AvailableCapacity;
// Current blocksize
ULONG BlockSize;
// Current number of partitions
ULONG PartitionCount;
// TRUEif media is write protected
BOOLEAN MediaWriteProtected;
} WMI_TAPE_MEDIA_PARAMETERS, *PWMI_TAPE_MEDIA_PARAMETERS;
typedef struct _WMI_TAPE_PROBLEM_WARNING
{
// Tape drive problem warning event
ULONG DriveProblemType;
// Tape drive problem data
UCHAR TapeData[512];
} WMI_TAPE_PROBLEM_WARNING, *PWMI_TAPE_PROBLEM_WARNING;
typedef struct _WMI_TAPE_PROBLEM_IO_ERROR
{
// Read errors corrected without much delay
ULONG ReadCorrectedWithoutDelay;
// Read errors corrected with substantial delay
ULONG ReadCorrectedWithDelay;
// Total number of Read errors
ULONG ReadTotalErrors;
// Total number of read errors that were corrected
ULONG ReadTotalCorrectedErrors;
// Total number of uncorrected read errors
ULONG ReadTotalUncorrectedErrors;
// Number of times correction algorithm was processed for read
ULONG ReadCorrectionAlgorithmProcessed;
// Write errors corrected without much delay
ULONG WriteCorrectedWithoutDelay;
// Write errors corrected with substantial delay
ULONG WriteCorrectedWithDelay;
// Total number of Read errors
ULONG WriteTotalErrors;
// Total number of write errors that were corrected
ULONG WriteTotalCorrectedErrors;
// Total number of uncorrected write errors
ULONG WriteTotalUncorrectedErrors;
// Number of times correction algorithm was processed for write
ULONG WriteCorrectionAlgorithmProcessed;
// Errors not related to medium
ULONG NonMediumErrors;
} WMI_TAPE_PROBLEM_IO_ERROR, *PWMI_TAPE_PROBLEM_IO_ERROR;
typedef struct _WMI_TAPE_PROBLEM_DEVICE_ERROR
{
// WARNING : Drive is experiencing read problem.
BOOLEAN ReadWarning;
// WARNING : Drive is experiencing write problem.
BOOLEAN WriteWarning;
// Drive hardware problem
BOOLEAN HardError;
// Critical Error : Too many read errors.
BOOLEAN ReadFailure;
// Critical Error : Too many write errors.
BOOLEAN WriteFailure;
// Tape format not supported
BOOLEAN UnsupportedFormat;
// Tape is snapped. Replace media
BOOLEAN TapeSnapped;
// Drive Requires Cleaning
BOOLEAN DriveRequiresCleaning;
// It's time to clean the drive
BOOLEAN TimetoCleanDrive;
// Hardware error. Check drive
BOOLEAN DriveHardwareError;
// Some error in cabling, or connection.
BOOLEAN ScsiInterfaceError;
// Critical Error : Media life expired.
BOOLEAN MediaLife;
} WMI_TAPE_PROBLEM_DEVICE_ERROR, *PWMI_TAPE_PROBLEM_DEVICE_ERROR;
// end_ntminitape