[ATL] Add CHAIN_MSG_MAP macro
[reactos.git] / sdk / include / psdk / ntddmmc.h
1 /**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the ReactOS PSDK package.
4 * No warranty is given; refer to the file DISCLAIMER within this package.
5 */
6
7 #pragma once
8
9 #define __NTDDMMC__
10
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14
15 #define SCSI_GET_CONFIGURATION_REQUEST_TYPE_ALL 0x0
16 #define SCSI_GET_CONFIGURATION_REQUEST_TYPE_CURRENT 0x1
17 #define SCSI_GET_CONFIGURATION_REQUEST_TYPE_ONE 0x2
18
19 typedef struct _GET_CONFIGURATION_HEADER {
20 UCHAR DataLength[4];
21 UCHAR Reserved[2];
22 UCHAR CurrentProfile[2];
23 #if !defined(__midl) && !defined(__WIDL__)
24 UCHAR Data[0];
25 #endif
26 } GET_CONFIGURATION_HEADER, *PGET_CONFIGURATION_HEADER;
27
28 typedef struct _FEATURE_HEADER {
29 UCHAR FeatureCode[2];
30 UCHAR Current:1;
31 UCHAR Persistent:1;
32 UCHAR Version:4;
33 UCHAR Reserved0:2;
34 UCHAR AdditionalLength;
35 } FEATURE_HEADER, *PFEATURE_HEADER;
36
37 typedef enum _FEATURE_PROFILE_TYPE {
38 ProfileInvalid = 0x0000,
39 ProfileNonRemovableDisk = 0x0001,
40 ProfileRemovableDisk = 0x0002,
41 ProfileMOErasable = 0x0003,
42 ProfileMOWriteOnce = 0x0004,
43 ProfileAS_MO = 0x0005,
44 ProfileCdrom = 0x0008,
45 ProfileCdRecordable = 0x0009,
46 ProfileCdRewritable = 0x000a,
47 ProfileDvdRom = 0x0010,
48 ProfileDvdRecordable = 0x0011,
49 ProfileDvdRam = 0x0012,
50 ProfileDvdRewritable = 0x0013,
51 ProfileDvdRWSequential = 0x0014,
52 ProfileDvdDashRDualLayer = 0x0015,
53 ProfileDvdDashRLayerJump = 0x0016,
54 ProfileDvdPlusRW = 0x001A,
55 ProfileDvdPlusR = 0x001B,
56 ProfileDDCdrom = 0x0020,
57 ProfileDDCdRecordable = 0x0021,
58 ProfileDDCdRewritable = 0x0022,
59 ProfileDvdPlusRWDualLayer = 0x002A,
60 ProfileDvdPlusRDualLayer = 0x002B,
61 ProfileBDRom = 0x0040,
62 ProfileBDRSequentialWritable = 0x0041,
63 ProfileBDRRandomWritable = 0x0042,
64 ProfileBDRewritable = 0x0043,
65 ProfileHDDVDRom = 0x0050,
66 ProfileHDDVDRecordable = 0x0051,
67 ProfileHDDVDRam = 0x0052,
68 ProfileHDDVDRewritable = 0x0053,
69 ProfileHDDVDRDualLayer = 0x0058,
70 ProfileHDDVDRWDualLayer = 0x005A,
71 ProfileNonStandard = 0xffff
72 } FEATURE_PROFILE_TYPE, *PFEATURE_PROFILE_TYPE;
73
74 typedef enum _FEATURE_NUMBER {
75 FeatureProfileList = 0x0000,
76 FeatureCore = 0x0001,
77 FeatureMorphing = 0x0002,
78 FeatureRemovableMedium = 0x0003,
79 FeatureWriteProtect = 0x0004,
80 FeatureRandomReadable = 0x0010,
81 FeatureMultiRead = 0x001D,
82 FeatureCdRead = 0x001E,
83 FeatureDvdRead = 0x001F,
84 FeatureRandomWritable = 0x0020,
85 FeatureIncrementalStreamingWritable = 0x0021,
86 FeatureSectorErasable = 0x0022,
87 FeatureFormattable = 0x0023,
88 FeatureDefectManagement = 0x0024,
89 FeatureWriteOnce = 0x0025,
90 FeatureRestrictedOverwrite = 0x0026,
91 FeatureCdrwCAVWrite = 0x0027,
92 FeatureMrw = 0x0028,
93 FeatureEnhancedDefectReporting = 0x0029,
94 FeatureDvdPlusRW = 0x002A,
95 FeatureDvdPlusR = 0x002B,
96 FeatureRigidRestrictedOverwrite = 0x002C,
97 FeatureCdTrackAtOnce = 0x002D,
98 FeatureCdMastering = 0x002E,
99 FeatureDvdRecordableWrite = 0x002F,
100 FeatureDDCDRead = 0x0030,
101 FeatureDDCDRWrite = 0x0031,
102 FeatureDDCDRWWrite = 0x0032,
103 FeatureLayerJumpRecording = 0x0033,
104 FeatureCDRWMediaWriteSupport = 0x0037,
105 FeatureBDRPseudoOverwrite = 0x0038,
106 FeatureDvdPlusRWDualLayer = 0x003A,
107 FeatureDvdPlusRDualLayer = 0x003B,
108 FeatureBDRead = 0x0040,
109 FeatureBDWrite = 0x0041,
110 FeatureTSR = 0x0042,
111 FeatureHDDVDRead = 0x0050,
112 FeatureHDDVDWrite = 0x0051,
113 FeatureHybridDisc = 0x0080,
114 FeaturePowerManagement = 0x0100,
115 FeatureSMART = 0x0101,
116 FeatureEmbeddedChanger = 0x0102,
117 FeatureCDAudioAnalogPlay = 0x0103,
118 FeatureMicrocodeUpgrade = 0x0104,
119 FeatureTimeout = 0x0105,
120 FeatureDvdCSS = 0x0106,
121 FeatureRealTimeStreaming = 0x0107,
122 FeatureLogicalUnitSerialNumber = 0x0108,
123 FeatureMediaSerialNumber = 0x0109,
124 FeatureDiscControlBlocks = 0x010A,
125 FeatureDvdCPRM = 0x010B,
126 FeatureFirmwareDate = 0x010C,
127 FeatureAACS = 0x010D,
128 FeatureVCPS = 0x0110,
129 } FEATURE_NUMBER, *PFEATURE_NUMBER;
130
131 typedef struct _FEATURE_DATA_PROFILE_LIST_EX {
132 UCHAR ProfileNumber[2];
133 UCHAR Current:1;
134 UCHAR Reserved1:7;
135 UCHAR Reserved2;
136 } FEATURE_DATA_PROFILE_LIST_EX, *PFEATURE_DATA_PROFILE_LIST_EX;
137
138 typedef struct _FEATURE_DATA_PROFILE_LIST {
139 FEATURE_HEADER Header;
140 #if !defined(__midl) && !defined(__WIDL__)
141 FEATURE_DATA_PROFILE_LIST_EX Profiles[0];
142 #endif
143 } FEATURE_DATA_PROFILE_LIST, *PFEATURE_DATA_PROFILE_LIST;
144
145 typedef struct _FEATURE_DATA_CORE {
146 FEATURE_HEADER Header;
147 UCHAR PhysicalInterface[4];
148 UCHAR DeviceBusyEvent:1;
149 UCHAR INQUIRY2:1;
150 UCHAR Reserved1:6;
151 UCHAR Reserved2[3];
152 } FEATURE_DATA_CORE, *PFEATURE_DATA_CORE;
153
154 typedef struct _FEATURE_DATA_MORPHING {
155 FEATURE_HEADER Header;
156 UCHAR Asynchronous:1;
157 UCHAR OCEvent:1;
158 UCHAR Reserved01:6;
159 UCHAR Reserved2[3];
160 } FEATURE_DATA_MORPHING, *PFEATURE_DATA_MORPHING;
161
162 typedef struct _FEATURE_DATA_REMOVABLE_MEDIUM {
163 FEATURE_HEADER Header;
164 UCHAR Lockable:1;
165 UCHAR Reserved1:1;
166 UCHAR DefaultToPrevent:1;
167 UCHAR Eject:1;
168 UCHAR Reserved2:1;
169 UCHAR LoadingMechanism:3;
170 UCHAR Reserved3[3];
171 } FEATURE_DATA_REMOVABLE_MEDIUM, *PFEATURE_DATA_REMOVABLE_MEDIUM;
172
173 typedef struct _FEATURE_DATA_WRITE_PROTECT {
174 FEATURE_HEADER Header;
175 UCHAR SupportsSWPPBit:1;
176 UCHAR SupportsPersistentWriteProtect:1;
177 UCHAR WriteInhibitDCB:1;
178 UCHAR DiscWriteProtectPAC:1;
179 UCHAR Reserved01:4;
180 UCHAR Reserved2[3];
181 } FEATURE_DATA_WRITE_PROTECT, *PFEATURE_DATA_WRITE_PROTECT;
182
183 typedef struct _FEATURE_DATA_RANDOM_READABLE {
184 FEATURE_HEADER Header;
185 UCHAR LogicalBlockSize[4];
186 UCHAR Blocking[2];
187 UCHAR ErrorRecoveryPagePresent:1;
188 UCHAR Reserved1:7;
189 UCHAR Reserved2;
190 } FEATURE_DATA_RANDOM_READABLE, *PFEATURE_DATA_RANDOM_READABLE;
191
192 typedef struct _FEATURE_DATA_MULTI_READ {
193 FEATURE_HEADER Header;
194 } FEATURE_DATA_MULTI_READ, *PFEATURE_DATA_MULTI_READ;
195
196 typedef struct _FEATURE_DATA_CD_READ {
197 FEATURE_HEADER Header;
198 UCHAR CDText:1;
199 UCHAR C2ErrorData:1;
200 UCHAR Reserved01:5;
201 UCHAR DigitalAudioPlay:1;
202 UCHAR Reserved2[3];
203 } FEATURE_DATA_CD_READ, *PFEATURE_DATA_CD_READ;
204
205 typedef struct _FEATURE_DATA_DVD_READ {
206 FEATURE_HEADER Header;
207 UCHAR Multi110:1;
208 UCHAR Reserved1:7;
209 UCHAR Reserved2;
210 UCHAR DualDashR:1;
211 UCHAR Reserved3:7;
212 UCHAR Reserved4;
213 } FEATURE_DATA_DVD_READ, *PFEATURE_DATA_DVD_READ;
214
215 typedef struct _FEATURE_DATA_RANDOM_WRITABLE {
216 FEATURE_HEADER Header;
217 UCHAR LastLBA[4];
218 UCHAR LogicalBlockSize[4];
219 UCHAR Blocking[2];
220 UCHAR ErrorRecoveryPagePresent:1;
221 UCHAR Reserved1:7;
222 UCHAR Reserved2;
223 } FEATURE_DATA_RANDOM_WRITABLE, *PFEATURE_DATA_RANDOM_WRITABLE;
224
225 typedef struct _FEATURE_DATA_INCREMENTAL_STREAMING_WRITABLE {
226 FEATURE_HEADER Header;
227 UCHAR DataTypeSupported[2];
228 UCHAR BufferUnderrunFree:1;
229 UCHAR AddressModeReservation:1;
230 UCHAR TrackRessourceInformation:1;
231 UCHAR Reserved01:5;
232 UCHAR NumberOfLinkSizes;
233 #if !defined(__midl) && !defined(__WIDL__)
234 UCHAR LinkSize[0];
235 #endif
236 } FEATURE_DATA_INCREMENTAL_STREAMING_WRITABLE, *PFEATURE_DATA_INCREMENTAL_STREAMING_WRITABLE;
237
238 typedef struct _FEATURE_DATA_SECTOR_ERASABLE {
239 FEATURE_HEADER Header;
240 } FEATURE_DATA_SECTOR_ERASABLE, *PFEATURE_DATA_SECTOR_ERASABLE;
241
242 typedef struct _FEATURE_DATA_FORMATTABLE {
243 FEATURE_HEADER Header;
244 UCHAR FullCertification:1;
245 UCHAR QuickCertification:1;
246 UCHAR SpareAreaExpansion:1;
247 UCHAR RENoSpareAllocated:1;
248 UCHAR Reserved1:4;
249 UCHAR Reserved2[3];
250 UCHAR RRandomWritable:1;
251 UCHAR Reserved3:7;
252 UCHAR Reserved4[3];
253 } FEATURE_DATA_FORMATTABLE, *PFEATURE_DATA_FORMATTABLE;
254
255 typedef struct _FEATURE_DATA_DEFECT_MANAGEMENT {
256 FEATURE_HEADER Header;
257 UCHAR Reserved1:7;
258 UCHAR SupplimentalSpareArea:1;
259 UCHAR Reserved2[3];
260 } FEATURE_DATA_DEFECT_MANAGEMENT, *PFEATURE_DATA_DEFECT_MANAGEMENT;
261
262 typedef struct _FEATURE_DATA_WRITE_ONCE {
263 FEATURE_HEADER Header;
264 UCHAR LogicalBlockSize[4];
265 UCHAR Blocking[2];
266 UCHAR ErrorRecoveryPagePresent:1;
267 UCHAR Reserved1:7;
268 UCHAR Reserved2;
269 } FEATURE_DATA_WRITE_ONCE, *PFEATURE_DATA_WRITE_ONCE;
270
271 typedef struct _FEATURE_DATA_RESTRICTED_OVERWRITE {
272 FEATURE_HEADER Header;
273 } FEATURE_DATA_RESTRICTED_OVERWRITE, *PFEATURE_DATA_RESTRICTED_OVERWRITE;
274
275 typedef struct _FEATURE_DATA_CDRW_CAV_WRITE {
276 FEATURE_HEADER Header;
277 UCHAR Reserved1[4];
278 } FEATURE_DATA_CDRW_CAV_WRITE, *PFEATURE_DATA_CDRW_CAV_WRITE;
279
280 typedef struct _FEATURE_DATA_MRW {
281 FEATURE_HEADER Header;
282 UCHAR Write:1;
283 UCHAR DvdPlusRead:1;
284 UCHAR DvdPlusWrite:1;
285 UCHAR Reserved01:5;
286 UCHAR Reserved2[3];
287 } FEATURE_DATA_MRW, *PFEATURE_DATA_MRW;
288
289 typedef struct _FEATURE_ENHANCED_DEFECT_REPORTING {
290 FEATURE_HEADER Header;
291 UCHAR DRTDMSupported:1;
292 UCHAR Reserved0:7;
293 UCHAR NumberOfDBICacheZones;
294 UCHAR NumberOfEntries[2];
295 } FEATURE_ENHANCED_DEFECT_REPORTING, *PFEATURE_ENHANCED_DEFECT_REPORTING;
296
297 typedef struct _FEATURE_DATA_DVD_PLUS_RW {
298 FEATURE_HEADER Header;
299 UCHAR Write:1;
300 UCHAR Reserved1:7;
301 UCHAR CloseOnly:1;
302 UCHAR QuickStart:1;
303 UCHAR Reserved02:6;
304 UCHAR Reserved03[2];
305 } FEATURE_DATA_DVD_PLUS_RW, *PFEATURE_DATA_DVD_PLUS_RW;
306
307 typedef struct _FEATURE_DATA_DVD_PLUS_R {
308 FEATURE_HEADER Header;
309 UCHAR Write:1;
310 UCHAR Reserved1:7;
311 UCHAR Reserved2[3];
312 } FEATURE_DATA_DVD_PLUS_R, *PFEATURE_DATA_DVD_PLUS_R;
313
314 typedef struct _FEATURE_DATA_DVD_RW_RESTRICTED_OVERWRITE {
315 FEATURE_HEADER Header;
316 UCHAR Blank:1;
317 UCHAR Intermediate:1;
318 UCHAR DefectStatusDataRead:1;
319 UCHAR DefectStatusDataGenerate:1;
320 UCHAR Reserved0:4;
321 UCHAR Reserved1[3];
322 } FEATURE_DATA_DVD_RW_RESTRICTED_OVERWRITE, *PFEATURE_DATA_DVD_RW_RESTRICTED_OVERWRITE;
323
324 typedef struct _FEATURE_DATA_CD_TRACK_AT_ONCE {
325 FEATURE_HEADER Header;
326 UCHAR RWSubchannelsRecordable:1;
327 UCHAR CdRewritable:1;
328 UCHAR TestWriteOk:1;
329 UCHAR RWSubchannelPackedOk:1;
330 UCHAR RWSubchannelRawOk:1;
331 UCHAR Reserved1:1;
332 UCHAR BufferUnderrunFree:1;
333 UCHAR Reserved3:1;
334 UCHAR Reserved2;
335 UCHAR DataTypeSupported[2];
336 } FEATURE_DATA_CD_TRACK_AT_ONCE, *PFEATURE_DATA_CD_TRACK_AT_ONCE;
337
338 typedef struct _FEATURE_DATA_CD_MASTERING {
339 FEATURE_HEADER Header;
340 UCHAR RWSubchannelsRecordable:1;
341 UCHAR CdRewritable:1;
342 UCHAR TestWriteOk:1;
343 UCHAR RawRecordingOk:1;
344 UCHAR RawMultiSessionOk:1;
345 UCHAR SessionAtOnceOk:1;
346 UCHAR BufferUnderrunFree:1;
347 UCHAR Reserved1:1;
348 UCHAR MaximumCueSheetLength[3];
349 } FEATURE_DATA_CD_MASTERING, *PFEATURE_DATA_CD_MASTERING;
350
351 typedef struct _FEATURE_DATA_DVD_RECORDABLE_WRITE {
352 FEATURE_HEADER Header;
353 UCHAR Reserved1:1;
354 UCHAR DVD_RW:1;
355 UCHAR TestWrite:1;
356 UCHAR RDualLayer:1;
357 UCHAR Reserved02:2;
358 UCHAR BufferUnderrunFree:1;
359 UCHAR Reserved3:1;
360 UCHAR Reserved4[3];
361 } FEATURE_DATA_DVD_RECORDABLE_WRITE, *PFEATURE_DATA_DVD_RECORDABLE_WRITE;
362
363 typedef struct _FEATURE_DATA_DDCD_READ {
364 FEATURE_HEADER Header;
365 } FEATURE_DATA_DDCD_READ, *PFEATURE_DATA_DDCD_READ;
366
367 typedef struct _FEATURE_DATA_DDCD_R_WRITE {
368 FEATURE_HEADER Header;
369 UCHAR Reserved1:2;
370 UCHAR TestWrite:1;
371 UCHAR Reserved2:5;
372 UCHAR Reserved3[3];
373 } FEATURE_DATA_DDCD_R_WRITE, *PFEATURE_DATA_DDCD_R_WRITE;
374
375 typedef struct _FEATURE_DATA_DDCD_RW_WRITE {
376 FEATURE_HEADER Header;
377 UCHAR Blank:1;
378 UCHAR Intermediate:1;
379 UCHAR Reserved1:6;
380 UCHAR Reserved2[3];
381 } FEATURE_DATA_DDCD_RW_WRITE, *PFEATURE_DATA_DDCD_RW_WRITE;
382
383 typedef struct _FEATURE_DATA_LAYER_JUMP_RECORDING {
384 FEATURE_HEADER Header;
385 UCHAR Reserved0[3];
386 UCHAR NumberOfLinkSizes;
387 #if !defined(__midl) && !defined(__WIDL__)
388 UCHAR LinkSizes[0];
389 #endif
390 } FEATURE_DATA_LAYER_JUMP_RECORDING, *PFEATURE_DATA_LAYER_JUMP_RECORDING;
391
392 typedef struct _FEATURE_CD_RW_MEDIA_WRITE_SUPPORT {
393 FEATURE_HEADER Header;
394 UCHAR Reserved1;
395 struct{
396 UCHAR Subtype0:1;
397 UCHAR Subtype1:1;
398 UCHAR Subtype2:1;
399 UCHAR Subtype3:1;
400 UCHAR Subtype4:1;
401 UCHAR Subtype5:1;
402 UCHAR Subtype6:1;
403 UCHAR Subtype7:1;
404 } CDRWMediaSubtypeSupport;
405 UCHAR Reserved2[2];
406 } FEATURE_CD_RW_MEDIA_WRITE_SUPPORT, *PFEATURE_CD_RW_MEDIA_WRITE_SUPPORT;
407
408 typedef struct _FEATURE_BD_R_PSEUDO_OVERWRITE {
409 FEATURE_HEADER Header;
410 UCHAR Reserved[4];
411 } FEATURE_BD_R_PSEUDO_OVERWRITE, *PFEATURE_BD_R_PSEUDO_OVERWRITE;
412
413 typedef struct _FEATURE_DATA_DVD_PLUS_RW_DUAL_LAYER {
414 FEATURE_HEADER Header;
415 UCHAR Write:1;
416 UCHAR Reserved1:7;
417 UCHAR CloseOnly:1;
418 UCHAR QuickStart:1;
419 UCHAR Reserved2:6;
420 UCHAR Reserved3[2];
421 } FEATURE_DATA_DVD_PLUS_RW_DUAL_LAYER, *PFEATURE_DATA_DVD_PLUS_RW_DUAL_LAYER;
422
423 typedef struct _FEATURE_DATA_DVD_PLUS_R_DUAL_LAYER {
424 FEATURE_HEADER Header;
425 UCHAR Write:1;
426 UCHAR Reserved1:7;
427 UCHAR Reserved2[3];
428 } FEATURE_DATA_DVD_PLUS_R_DUAL_LAYER, *PFEATURE_DATA_DVD_PLUS_R_DUAL_LAYER;
429
430 typedef struct _BD_CLASS_SUPPORT_BITMAP {
431 UCHAR Version8:1;
432 UCHAR Version9:1;
433 UCHAR Version10:1;
434 UCHAR Version11:1;
435 UCHAR Version12:1;
436 UCHAR Version13:1;
437 UCHAR Version14:1;
438 UCHAR Version15:1;
439 UCHAR Version0:1;
440 UCHAR Version1:1;
441 UCHAR Version2:1;
442 UCHAR Version3:1;
443 UCHAR Version4:1;
444 UCHAR Version5:1;
445 UCHAR Version6:1;
446 UCHAR Version7:1;
447 } BD_CLASS_SUPPORT_BITMAP, *PBD_CLASS_SUPPORT_BITMAP;
448
449 typedef struct _FEATURE_BD_READ {
450 FEATURE_HEADER Header;
451 UCHAR Reserved[4];
452 BD_CLASS_SUPPORT_BITMAP Class0BitmapBDREReadSupport;
453 BD_CLASS_SUPPORT_BITMAP Class1BitmapBDREReadSupport;
454 BD_CLASS_SUPPORT_BITMAP Class2BitmapBDREReadSupport;
455 BD_CLASS_SUPPORT_BITMAP Class3BitmapBDREReadSupport;
456 BD_CLASS_SUPPORT_BITMAP Class0BitmapBDRReadSupport;
457 BD_CLASS_SUPPORT_BITMAP Class1BitmapBDRReadSupport;
458 BD_CLASS_SUPPORT_BITMAP Class2BitmapBDRReadSupport;
459 BD_CLASS_SUPPORT_BITMAP Class3BitmapBDRReadSupport;
460 BD_CLASS_SUPPORT_BITMAP Class0BitmapBDROMReadSupport;
461 BD_CLASS_SUPPORT_BITMAP Class1BitmapBDROMReadSupport;
462 BD_CLASS_SUPPORT_BITMAP Class2BitmapBDROMReadSupport;
463 BD_CLASS_SUPPORT_BITMAP Class3BitmapBDROMReadSupport;
464 } FEATURE_BD_READ, *PFEATURE_BD_READ;
465
466 typedef struct _FEATURE_BD_WRITE {
467 FEATURE_HEADER Header;
468 UCHAR SupportsVerifyNotRequired:1;
469 UCHAR Reserved1:7;
470 UCHAR Reserved2[3];
471 BD_CLASS_SUPPORT_BITMAP Class0BitmapBDREWriteSupport;
472 BD_CLASS_SUPPORT_BITMAP Class1BitmapBDREWriteSupport;
473 BD_CLASS_SUPPORT_BITMAP Class2BitmapBDREWriteSupport;
474 BD_CLASS_SUPPORT_BITMAP Class3BitmapBDREWriteSupport;
475 BD_CLASS_SUPPORT_BITMAP Class0BitmapBDRWriteSupport;
476 BD_CLASS_SUPPORT_BITMAP Class1BitmapBDRWriteSupport;
477 BD_CLASS_SUPPORT_BITMAP Class2BitmapBDRWriteSupport;
478 BD_CLASS_SUPPORT_BITMAP Class3BitmapBDRWriteSupport;
479 } FEATURE_BD_WRITE, *PFEATURE_BD_WRITE;
480
481 typedef struct _FEATURE_TSR {
482 FEATURE_HEADER Header;
483 } FEATURE_TSR, *PFEATURE_TSR;
484
485 typedef struct _FEATURE_DATA_HDDVD_READ {
486 FEATURE_HEADER Header;
487 UCHAR Recordable:1;
488 UCHAR Reserved0:7;
489 UCHAR Reserved1;
490 UCHAR Rewritable:1;
491 UCHAR Reserved2:7;
492 UCHAR Reserved3;
493 } FEATURE_DATA_HDDVD_READ, *PFEATURE_DATA_HDDVD_READ;
494
495 typedef struct _FEATURE_DATA_HDDVD_WRITE {
496 FEATURE_HEADER Header;
497 UCHAR Recordable:1;
498 UCHAR Reserved0:7;
499 UCHAR Reserved1;
500 UCHAR Rewritable:1;
501 UCHAR Reserved2:7;
502 UCHAR Reserved3;
503 } FEATURE_DATA_HDDVD_WRITE, *PFEATURE_DATA_HDDVD_WRITE;
504
505 typedef struct _FEATURE_HYBRID_DISC {
506 FEATURE_HEADER Header;
507 UCHAR ResetImmunity:1;
508 UCHAR Reserved1:7;
509 UCHAR Reserved2[3];
510 } FEATURE_HYBRID_DISC, *PFEATURE_HYBRID_DISC;
511
512 typedef struct _FEATURE_DATA_POWER_MANAGEMENT {
513 FEATURE_HEADER Header;
514 } FEATURE_DATA_POWER_MANAGEMENT, *PFEATURE_DATA_POWER_MANAGEMENT;
515
516 typedef struct _FEATURE_DATA_SMART {
517 FEATURE_HEADER Header;
518 UCHAR FaultFailureReportingPagePresent:1;
519 UCHAR Reserved1:7;
520 UCHAR Reserved02[3];
521 } FEATURE_DATA_SMART, *PFEATURE_DATA_SMART;
522
523 typedef struct _FEATURE_DATA_EMBEDDED_CHANGER {
524 FEATURE_HEADER Header;
525 UCHAR Reserved1:2;
526 UCHAR SupportsDiscPresent:1;
527 UCHAR Reserved2:1;
528 UCHAR SideChangeCapable:1;
529 UCHAR Reserved3:3;
530 UCHAR Reserved4[2];
531 UCHAR HighestSlotNumber:5;
532 UCHAR Reserved:3;
533 } FEATURE_DATA_EMBEDDED_CHANGER, *PFEATURE_DATA_EMBEDDED_CHANGER;
534
535 typedef struct _FEATURE_DATA_CD_AUDIO_ANALOG_PLAY {
536 FEATURE_HEADER Header;
537 UCHAR SeperateVolume:1;
538 UCHAR SeperateChannelMute:1;
539 UCHAR ScanSupported:1;
540 UCHAR Reserved1:5;
541 UCHAR Reserved2;
542 UCHAR NumerOfVolumeLevels[2];
543 } FEATURE_DATA_CD_AUDIO_ANALOG_PLAY, *PFEATURE_DATA_CD_AUDIO_ANALOG_PLAY;
544
545 typedef struct _FEATURE_DATA_MICROCODE_UPDATE {
546 FEATURE_HEADER Header;
547 UCHAR M5:1;
548 UCHAR Reserved1:7;
549 UCHAR Reserved2[3];
550 } FEATURE_DATA_MICROCODE_UPDATE, *PFEATURE_DATA_MICROCODE_UPDATE;
551
552 typedef struct _FEATURE_DATA_TIMEOUT {
553 FEATURE_HEADER Header;
554 UCHAR Group3:1;
555 UCHAR Reserved1:7;
556 UCHAR Reserved2;
557 UCHAR UnitLength[2];
558 } FEATURE_DATA_TIMEOUT, *PFEATURE_DATA_TIMEOUT;
559
560 typedef struct _FEATURE_DATA_DVD_CSS {
561 FEATURE_HEADER Header;
562 UCHAR Reserved1[3];
563 UCHAR CssVersion;
564 } FEATURE_DATA_DVD_CSS, *PFEATURE_DATA_DVD_CSS;
565
566 typedef struct _FEATURE_DATA_REAL_TIME_STREAMING {
567 FEATURE_HEADER Header;
568 UCHAR StreamRecording:1;
569 UCHAR WriteSpeedInGetPerf:1;
570 UCHAR WriteSpeedInMP2A:1;
571 UCHAR SetCDSpeed:1;
572 UCHAR ReadBufferCapacityBlock:1;
573 UCHAR Reserved1:3;
574 UCHAR Reserved2[3];
575 } FEATURE_DATA_REAL_TIME_STREAMING, *PFEATURE_DATA_REAL_TIME_STREAMING;
576
577 typedef struct _FEATURE_DATA_LOGICAL_UNIT_SERIAL_NUMBER {
578 FEATURE_HEADER Header;
579 #if !defined(__midl) && !defined(__WIDL__)
580 UCHAR SerialNumber[0];
581 #endif
582 } FEATURE_DATA_LOGICAL_UNIT_SERIAL_NUMBER, *PFEATURE_DATA_LOGICAL_UNIT_SERIAL_NUMBER;
583
584 typedef struct _FEATURE_MEDIA_SERIAL_NUMBER {
585 FEATURE_HEADER Header;
586 } FEATURE_MEDIA_SERIAL_NUMBER, *PFEATURE_MEDIA_SERIAL_NUMBER;
587
588 typedef struct _FEATURE_DATA_DISC_CONTROL_BLOCKS_EX {
589 UCHAR ContentDescriptor[4];
590 } FEATURE_DATA_DISC_CONTROL_BLOCKS_EX, *PFEATURE_DATA_DISC_CONTROL_BLOCKS_EX;
591
592 typedef struct _FEATURE_DATA_DISC_CONTROL_BLOCKS {
593 FEATURE_HEADER Header;
594 #if !defined(__midl) && !defined(__WIDL__)
595 FEATURE_DATA_DISC_CONTROL_BLOCKS_EX Data[0];
596 #endif
597 } FEATURE_DATA_DISC_CONTROL_BLOCKS, *PFEATURE_DATA_DISC_CONTROL_BLOCKS;
598
599 typedef struct _FEATURE_DATA_DVD_CPRM {
600 FEATURE_HEADER Header;
601 UCHAR Reserved0[3];
602 UCHAR CPRMVersion;
603 } FEATURE_DATA_DVD_CPRM, *PFEATURE_DATA_DVD_CPRM;
604
605 typedef struct _FEATURE_DATA_FIRMWARE_DATE {
606 FEATURE_HEADER Header;
607 UCHAR Year[4];
608 UCHAR Month[2];
609 UCHAR Day[2];
610 UCHAR Hour[2];
611 UCHAR Minute[2];
612 UCHAR Seconds[2];
613 UCHAR Reserved[2];
614 } FEATURE_DATA_FIRMWARE_DATE, *PFEATURE_DATA_FIRMWARE_DATE;
615
616 typedef struct _FEATURE_DATA_AACS {
617 FEATURE_HEADER Header;
618 UCHAR BindingNonceGeneration:1;
619 UCHAR Reserved0:7;
620 UCHAR BindingNonceBlockCount;
621 UCHAR NumberOfAGIDs:4;
622 UCHAR Reserved1:4;
623 UCHAR AACSVersion;
624 } FEATURE_DATA_AACS, *PFEATURE_DATA_AACS;
625
626 typedef struct _FEATURE_VCPS {
627 FEATURE_HEADER Header;
628 UCHAR Reserved[4];
629 } FEATURE_VCPS, *PFEATURE_VCPS;
630
631 typedef struct _FEATURE_DATA_RESERVED {
632 FEATURE_HEADER Header;
633 #if !defined(__midl) && !defined(__WIDL__)
634 UCHAR Data[0];
635 #endif
636 } FEATURE_DATA_RESERVED, *PFEATURE_DATA_RESERVED;
637
638 typedef struct _FEATURE_DATA_VENDOR_SPECIFIC {
639 FEATURE_HEADER Header;
640 #if !defined(__midl) && !defined(__WIDL__)
641 UCHAR VendorSpecificData[0];
642 #endif
643 } FEATURE_DATA_VENDOR_SPECIFIC, *PFEATURE_DATA_VENDOR_SPECIFIC;
644
645 typedef struct _GET_CONFIGURATION_IOCTL_INPUT {
646 FEATURE_NUMBER Feature;
647 ULONG RequestType;
648 PVOID Reserved[2];
649 } GET_CONFIGURATION_IOCTL_INPUT, *PGET_CONFIGURATION_IOCTL_INPUT;
650
651 #if defined(_WIN64)
652 typedef struct _GET_CONFIGURATION_IOCTL_INPUT32 {
653 FEATURE_NUMBER Feature;
654 ULONG RequestType;
655 VOID* UPOINTER_32 Reserved[2];
656 } GET_CONFIGURATION_IOCTL_INPUT32, *PGET_CONFIGURATION_IOCTL_INPUT32;
657 #endif
658
659 #ifdef __cplusplus
660 }
661 #endif