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
12extern "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
19typedef 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
28typedef 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
37typedef 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
74typedef 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
131typedef 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
138typedef 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
145typedef 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
154typedef 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
162typedef 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
173typedef 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
183typedef 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
192typedef struct _FEATURE_DATA_MULTI_READ {
193  FEATURE_HEADER Header;
194} FEATURE_DATA_MULTI_READ, *PFEATURE_DATA_MULTI_READ;
195
196typedef 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
205typedef 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
215typedef 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
225typedef 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
238typedef struct _FEATURE_DATA_SECTOR_ERASABLE {
239  FEATURE_HEADER Header;
240} FEATURE_DATA_SECTOR_ERASABLE, *PFEATURE_DATA_SECTOR_ERASABLE;
241
242typedef 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
255typedef 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
262typedef 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
271typedef struct _FEATURE_DATA_RESTRICTED_OVERWRITE {
272  FEATURE_HEADER Header;
273} FEATURE_DATA_RESTRICTED_OVERWRITE, *PFEATURE_DATA_RESTRICTED_OVERWRITE;
274
275typedef 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
280typedef 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
289typedef 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
297typedef 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
307typedef 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
314typedef 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
324typedef 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
338typedef 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
351typedef 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
363typedef struct _FEATURE_DATA_DDCD_READ {
364  FEATURE_HEADER Header;
365} FEATURE_DATA_DDCD_READ, *PFEATURE_DATA_DDCD_READ;
366
367typedef 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
375typedef 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
383typedef 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
392typedef 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
408typedef 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
413typedef 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
423typedef 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
430typedef 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
449typedef 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
466typedef 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
481typedef struct _FEATURE_TSR {
482  FEATURE_HEADER Header;
483} FEATURE_TSR, *PFEATURE_TSR;
484
485typedef 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
495typedef 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
505typedef 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
512typedef struct _FEATURE_DATA_POWER_MANAGEMENT {
513  FEATURE_HEADER Header;
514} FEATURE_DATA_POWER_MANAGEMENT, *PFEATURE_DATA_POWER_MANAGEMENT;
515
516typedef 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
523typedef 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
535typedef 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
545typedef 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
552typedef 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
560typedef 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
566typedef 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
577typedef 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
584typedef struct _FEATURE_MEDIA_SERIAL_NUMBER {
585  FEATURE_HEADER Header;
586} FEATURE_MEDIA_SERIAL_NUMBER, *PFEATURE_MEDIA_SERIAL_NUMBER;
587
588typedef 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
592typedef 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
599typedef 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
605typedef 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
616typedef 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
626typedef struct _FEATURE_VCPS {
627  FEATURE_HEADER Header;
628  UCHAR Reserved[4];
629} FEATURE_VCPS, *PFEATURE_VCPS;
630
631typedef 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
638typedef 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
645typedef 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)
652typedef 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
662