3 Copyright (C) Microsoft Corporation, 1998 - 1999
11 These are the structures and defines used in the Reduced Block Command set
15 George Chrysanthakopoulos(georgioc) - April 1998
19 Dan Knudson (DanKn), 23 Sep 1999 - updated per rev 10 of RBC spec
28 // Command Descriptor Block. encapsulated under the bus/protocol specific request block
31 typedef union _CDB_RBC
{
41 UCHAR Percent_Time
: 1;
43 UCHAR VendorSpecific1
: 5;
46 } FORMAT_RBC
, *PFORMAT_RBC
;
49 // prevent/allow medium removal
52 struct _MEDIA_REMOVAL_RBC
{
61 } MEDIA_REMOVAL_RBC
, *PMEDIA_REMOVAL_RBC
;
67 struct _START_STOP_RBC
{
75 UCHAR PowerConditions
: 4;
77 } START_STOP_RBC
, *PSTART_STOP_RBC
;
79 struct _SYNCHRONIZE_CACHE_RBC
{
81 UCHAR OperationCode
; // 0x35
85 } SYNCHRONIZE_CACHE_RBC
, *PSYNCHRONIZE_CACHE_RBC
;
92 // START_STOP_UNIT Power Condition descriptions
95 #define START_STOP_RBC_POWER_CND_NO_CHANGE 0
96 #define START_STOP_RBC_POWER_CND_ACTIVE 1
97 #define START_STOP_RBC_POWER_CND_IDLE 2
98 #define START_STOP_RBC_POWER_CND_STANDBY 3
99 #define START_STOP_RBC_POWER_CND_SLEEP 5
100 #define START_STOP_RBC_POWER_CND_DEVICE_CTRL 7
104 // Mode Sense/Select page constants.
107 #define MODE_PAGE_RBC_DEVICE_PARAMETERS 0x06
111 // DeviceType field in inquiry Data
114 #define RBC_DEVICE 0x0E
117 // Define Device Capabilities page.
120 typedef struct _MODE_RBC_DEVICE_PARAMETERS_PAGE
{
123 UCHAR PageSavable
: 1;
125 UCHAR WriteCacheDisable
: 1;
127 UCHAR LogicalBlockSize
[2];
128 UCHAR NumberOfLogicalBlocks
[5];
129 UCHAR PowerPerformance
;
130 UCHAR LockDisabled
: 1;
131 UCHAR FormatDisabled
: 1;
132 UCHAR WriteDisabled
: 1;
133 UCHAR ReadDisabled
: 1;
137 }MODE_RBC_DEVICE_PARAMETERS_PAGE
, *PMODE_RBC_DEVICE_PARAMETERS_PAGE
;
139 typedef struct _MODE_RBC_DEVICE_PARAMETERS_HEADER_AND_PAGE
{
141 MODE_PARAMETER_HEADER Header
;
142 MODE_RBC_DEVICE_PARAMETERS_PAGE Page
;
144 }MODE_RBC_DEVICE_PARAMETERS_HEADER_AND_PAGE
,
145 *PMODE_RBC_DEVICE_PARAMETERS_HEADER_AND_PAGE
;
149 // unsolicited status sense code qualifier values
152 #define RBC_UNSOLICITED_STATUS 0x02
153 #define RBC_UNSOLICITED_SENSE_KEY 0x06
155 #define RBC_UNSOLICITED_SC_PWR_STATE_CHNG 0xFF
156 #define RBC_UNSOLICITED_SC_EVENT_STATUS 0xFE
158 #define RBC_UNSOLICITED_CLASS_ASQ_DEVICE 0x06
159 #define RBC_UNSOLICITED_CLASS_ASQ_MEDIA 0x04
160 #define RBC_UNSOLICITED_CLASS_ASQ_POWER 0x02
166 // Translation routine used to convert SCSI requests that differ from RBC
171 IN PSCSI_REQUEST_BLOCK Srb
,
172 IN PSCSI_REQUEST_BLOCK
*OriginalSrb
,
173 IN PMODE_RBC_DEVICE_PARAMETERS_HEADER_AND_PAGE RbcHeaderAndPage
,
174 IN BOOLEAN OutgoingRequest
,
175 IN BOOLEAN RemovableMedia