/**
 * This file has no copyright assigned and is placed in the Public Domain.
 * This file is part of the ReactOS PSDK package.
 * No warranty is given; refer to the file DISCLAIMER within this package.
 */

#pragma once

#define __NTDDMMC__

#ifdef __cplusplus
extern "C" {
#endif

#define SCSI_GET_CONFIGURATION_REQUEST_TYPE_ALL          0x0
#define SCSI_GET_CONFIGURATION_REQUEST_TYPE_CURRENT      0x1
#define SCSI_GET_CONFIGURATION_REQUEST_TYPE_ONE          0x2

typedef struct _GET_CONFIGURATION_HEADER {
  UCHAR DataLength[4];
  UCHAR Reserved[2];
  UCHAR CurrentProfile[2];
#if !defined(__midl) && !defined(__WIDL__)
  UCHAR Data[0];
#endif
} GET_CONFIGURATION_HEADER, *PGET_CONFIGURATION_HEADER;

typedef struct _FEATURE_HEADER {
  UCHAR FeatureCode[2];
  UCHAR Current:1;
  UCHAR Persistent:1;
  UCHAR Version:4;
  UCHAR Reserved0:2;
  UCHAR AdditionalLength;
} FEATURE_HEADER, *PFEATURE_HEADER;

typedef enum _FEATURE_PROFILE_TYPE {
  ProfileInvalid = 0x0000,
  ProfileNonRemovableDisk = 0x0001,
  ProfileRemovableDisk = 0x0002,
  ProfileMOErasable = 0x0003,
  ProfileMOWriteOnce = 0x0004,
  ProfileAS_MO = 0x0005,
  ProfileCdrom = 0x0008,
  ProfileCdRecordable = 0x0009,
  ProfileCdRewritable = 0x000a,
  ProfileDvdRom = 0x0010,
  ProfileDvdRecordable = 0x0011,
  ProfileDvdRam = 0x0012,
  ProfileDvdRewritable = 0x0013,
  ProfileDvdRWSequential = 0x0014,
  ProfileDvdDashRDualLayer = 0x0015,
  ProfileDvdDashRLayerJump = 0x0016,
  ProfileDvdPlusRW = 0x001A,
  ProfileDvdPlusR = 0x001B,
  ProfileDDCdrom = 0x0020,
  ProfileDDCdRecordable = 0x0021,
  ProfileDDCdRewritable = 0x0022,
  ProfileDvdPlusRWDualLayer = 0x002A,
  ProfileDvdPlusRDualLayer = 0x002B,
  ProfileBDRom = 0x0040,
  ProfileBDRSequentialWritable = 0x0041,
  ProfileBDRRandomWritable = 0x0042,
  ProfileBDRewritable = 0x0043,
  ProfileHDDVDRom = 0x0050,
  ProfileHDDVDRecordable = 0x0051,
  ProfileHDDVDRam = 0x0052,
  ProfileHDDVDRewritable = 0x0053,
  ProfileHDDVDRDualLayer = 0x0058,
  ProfileHDDVDRWDualLayer = 0x005A,
  ProfileNonStandard = 0xffff
} FEATURE_PROFILE_TYPE, *PFEATURE_PROFILE_TYPE;

typedef enum _FEATURE_NUMBER {
  FeatureProfileList = 0x0000,
  FeatureCore = 0x0001,
  FeatureMorphing = 0x0002,
  FeatureRemovableMedium = 0x0003,
  FeatureWriteProtect = 0x0004,
  FeatureRandomReadable = 0x0010,
  FeatureMultiRead = 0x001D,
  FeatureCdRead = 0x001E,
  FeatureDvdRead = 0x001F,
  FeatureRandomWritable = 0x0020,
  FeatureIncrementalStreamingWritable = 0x0021,
  FeatureSectorErasable = 0x0022,
  FeatureFormattable = 0x0023,
  FeatureDefectManagement = 0x0024,
  FeatureWriteOnce = 0x0025,
  FeatureRestrictedOverwrite = 0x0026,
  FeatureCdrwCAVWrite = 0x0027,
  FeatureMrw = 0x0028,
  FeatureEnhancedDefectReporting = 0x0029,
  FeatureDvdPlusRW = 0x002A,
  FeatureDvdPlusR = 0x002B,
  FeatureRigidRestrictedOverwrite = 0x002C,
  FeatureCdTrackAtOnce = 0x002D,
  FeatureCdMastering = 0x002E,
  FeatureDvdRecordableWrite = 0x002F,
  FeatureDDCDRead = 0x0030,
  FeatureDDCDRWrite = 0x0031,
  FeatureDDCDRWWrite = 0x0032,
  FeatureLayerJumpRecording = 0x0033,
  FeatureCDRWMediaWriteSupport = 0x0037,
  FeatureBDRPseudoOverwrite = 0x0038,
  FeatureDvdPlusRWDualLayer = 0x003A,
  FeatureDvdPlusRDualLayer = 0x003B,
  FeatureBDRead = 0x0040,
  FeatureBDWrite = 0x0041,
  FeatureTSR = 0x0042,
  FeatureHDDVDRead = 0x0050,
  FeatureHDDVDWrite = 0x0051,
  FeatureHybridDisc = 0x0080,
  FeaturePowerManagement = 0x0100,
  FeatureSMART = 0x0101,
  FeatureEmbeddedChanger = 0x0102,
  FeatureCDAudioAnalogPlay = 0x0103,
  FeatureMicrocodeUpgrade = 0x0104,
  FeatureTimeout = 0x0105,
  FeatureDvdCSS = 0x0106,
  FeatureRealTimeStreaming = 0x0107,
  FeatureLogicalUnitSerialNumber = 0x0108,
  FeatureMediaSerialNumber = 0x0109,
  FeatureDiscControlBlocks = 0x010A,
  FeatureDvdCPRM = 0x010B,
  FeatureFirmwareDate = 0x010C,
  FeatureAACS = 0x010D,
  FeatureVCPS = 0x0110
} FEATURE_NUMBER, *PFEATURE_NUMBER;

typedef struct _FEATURE_DATA_PROFILE_LIST_EX {
  UCHAR ProfileNumber[2];
  UCHAR Current:1;
  UCHAR Reserved1:7;
  UCHAR Reserved2;
} FEATURE_DATA_PROFILE_LIST_EX, *PFEATURE_DATA_PROFILE_LIST_EX;

typedef struct _FEATURE_DATA_PROFILE_LIST {
  FEATURE_HEADER Header;
#if !defined(__midl) && !defined(__WIDL__)
  FEATURE_DATA_PROFILE_LIST_EX Profiles[0];
#endif
} FEATURE_DATA_PROFILE_LIST, *PFEATURE_DATA_PROFILE_LIST;

typedef struct _FEATURE_DATA_CORE {
  FEATURE_HEADER Header;
  UCHAR PhysicalInterface[4];
  UCHAR DeviceBusyEvent:1;
  UCHAR INQUIRY2:1;
  UCHAR Reserved1:6;
  UCHAR Reserved2[3];
} FEATURE_DATA_CORE, *PFEATURE_DATA_CORE;

typedef struct _FEATURE_DATA_MORPHING {
  FEATURE_HEADER Header;
  UCHAR Asynchronous:1;
  UCHAR OCEvent:1;
  UCHAR Reserved01:6;
  UCHAR Reserved2[3];
} FEATURE_DATA_MORPHING, *PFEATURE_DATA_MORPHING;

typedef struct _FEATURE_DATA_REMOVABLE_MEDIUM {
  FEATURE_HEADER Header;
  UCHAR Lockable:1;
  UCHAR Reserved1:1;
  UCHAR DefaultToPrevent:1;
  UCHAR Eject:1;
  UCHAR Reserved2:1;
  UCHAR LoadingMechanism:3;
  UCHAR Reserved3[3];
} FEATURE_DATA_REMOVABLE_MEDIUM, *PFEATURE_DATA_REMOVABLE_MEDIUM;

typedef struct _FEATURE_DATA_WRITE_PROTECT {
  FEATURE_HEADER Header;
  UCHAR SupportsSWPPBit:1;
  UCHAR SupportsPersistentWriteProtect:1;
  UCHAR WriteInhibitDCB:1;
  UCHAR DiscWriteProtectPAC:1;
  UCHAR Reserved01:4;
  UCHAR Reserved2[3];
} FEATURE_DATA_WRITE_PROTECT, *PFEATURE_DATA_WRITE_PROTECT;

typedef struct _FEATURE_DATA_RANDOM_READABLE {
  FEATURE_HEADER Header;
  UCHAR LogicalBlockSize[4];
  UCHAR Blocking[2];
  UCHAR ErrorRecoveryPagePresent:1;
  UCHAR Reserved1:7;
  UCHAR Reserved2;
} FEATURE_DATA_RANDOM_READABLE, *PFEATURE_DATA_RANDOM_READABLE;

typedef struct _FEATURE_DATA_MULTI_READ {
  FEATURE_HEADER Header;
} FEATURE_DATA_MULTI_READ, *PFEATURE_DATA_MULTI_READ;

typedef struct _FEATURE_DATA_CD_READ {
  FEATURE_HEADER Header;
  UCHAR CDText:1;
  UCHAR C2ErrorData:1;
  UCHAR Reserved01:5;
  UCHAR DigitalAudioPlay:1;
  UCHAR Reserved2[3];
} FEATURE_DATA_CD_READ, *PFEATURE_DATA_CD_READ;

typedef struct _FEATURE_DATA_DVD_READ {
  FEATURE_HEADER Header;
  UCHAR Multi110:1;
  UCHAR Reserved1:7;
  UCHAR Reserved2;
  UCHAR DualDashR:1;
  UCHAR Reserved3:7;
  UCHAR Reserved4;
} FEATURE_DATA_DVD_READ, *PFEATURE_DATA_DVD_READ;

typedef struct _FEATURE_DATA_RANDOM_WRITABLE {
  FEATURE_HEADER Header;
  UCHAR LastLBA[4];
  UCHAR LogicalBlockSize[4];
  UCHAR Blocking[2];
  UCHAR ErrorRecoveryPagePresent:1;
  UCHAR Reserved1:7;
  UCHAR Reserved2;
} FEATURE_DATA_RANDOM_WRITABLE, *PFEATURE_DATA_RANDOM_WRITABLE;

typedef struct _FEATURE_DATA_INCREMENTAL_STREAMING_WRITABLE {
  FEATURE_HEADER Header;
  UCHAR DataTypeSupported[2];
  UCHAR BufferUnderrunFree:1;
  UCHAR AddressModeReservation:1;
  UCHAR TrackRessourceInformation:1;
  UCHAR Reserved01:5;
  UCHAR NumberOfLinkSizes;
#if !defined(__midl) && !defined(__WIDL__)
  UCHAR LinkSize[0];
#endif
} FEATURE_DATA_INCREMENTAL_STREAMING_WRITABLE, *PFEATURE_DATA_INCREMENTAL_STREAMING_WRITABLE;

typedef struct _FEATURE_DATA_SECTOR_ERASABLE {
  FEATURE_HEADER Header;
} FEATURE_DATA_SECTOR_ERASABLE, *PFEATURE_DATA_SECTOR_ERASABLE;

typedef struct _FEATURE_DATA_FORMATTABLE {
  FEATURE_HEADER Header;
  UCHAR FullCertification:1;
  UCHAR QuickCertification:1;
  UCHAR SpareAreaExpansion:1;
  UCHAR RENoSpareAllocated:1;
  UCHAR Reserved1:4;
  UCHAR Reserved2[3];
  UCHAR RRandomWritable:1;
  UCHAR Reserved3:7;
  UCHAR Reserved4[3];
} FEATURE_DATA_FORMATTABLE, *PFEATURE_DATA_FORMATTABLE;

typedef struct _FEATURE_DATA_DEFECT_MANAGEMENT {
  FEATURE_HEADER Header;
  UCHAR Reserved1:7;
  UCHAR SupplimentalSpareArea:1;
  UCHAR Reserved2[3];
} FEATURE_DATA_DEFECT_MANAGEMENT, *PFEATURE_DATA_DEFECT_MANAGEMENT;

typedef struct _FEATURE_DATA_WRITE_ONCE {
  FEATURE_HEADER Header;
  UCHAR LogicalBlockSize[4];
  UCHAR Blocking[2];
  UCHAR ErrorRecoveryPagePresent:1;
  UCHAR Reserved1:7;
  UCHAR Reserved2;
} FEATURE_DATA_WRITE_ONCE, *PFEATURE_DATA_WRITE_ONCE;

typedef struct _FEATURE_DATA_RESTRICTED_OVERWRITE {
  FEATURE_HEADER Header;
} FEATURE_DATA_RESTRICTED_OVERWRITE, *PFEATURE_DATA_RESTRICTED_OVERWRITE;

typedef struct _FEATURE_DATA_CDRW_CAV_WRITE {
  FEATURE_HEADER Header;
  UCHAR Reserved1[4];
} FEATURE_DATA_CDRW_CAV_WRITE, *PFEATURE_DATA_CDRW_CAV_WRITE;

typedef struct _FEATURE_DATA_MRW {
  FEATURE_HEADER Header;
  UCHAR Write:1;
  UCHAR DvdPlusRead:1;
  UCHAR DvdPlusWrite:1;
  UCHAR Reserved01:5;
  UCHAR Reserved2[3];
} FEATURE_DATA_MRW, *PFEATURE_DATA_MRW;

typedef struct _FEATURE_ENHANCED_DEFECT_REPORTING {
  FEATURE_HEADER Header;
  UCHAR DRTDMSupported:1;
  UCHAR Reserved0:7;
  UCHAR NumberOfDBICacheZones;
  UCHAR NumberOfEntries[2];
} FEATURE_ENHANCED_DEFECT_REPORTING, *PFEATURE_ENHANCED_DEFECT_REPORTING;

typedef struct _FEATURE_DATA_DVD_PLUS_RW {
  FEATURE_HEADER Header;
  UCHAR Write:1;
  UCHAR Reserved1:7;
  UCHAR CloseOnly:1;
  UCHAR QuickStart:1;
  UCHAR Reserved02:6;
  UCHAR Reserved03[2];
} FEATURE_DATA_DVD_PLUS_RW, *PFEATURE_DATA_DVD_PLUS_RW;

typedef struct _FEATURE_DATA_DVD_PLUS_R {
  FEATURE_HEADER Header;
  UCHAR Write:1;
  UCHAR Reserved1:7;
  UCHAR Reserved2[3];
} FEATURE_DATA_DVD_PLUS_R, *PFEATURE_DATA_DVD_PLUS_R;

typedef struct _FEATURE_DATA_DVD_RW_RESTRICTED_OVERWRITE {
  FEATURE_HEADER Header;
  UCHAR Blank:1;
  UCHAR Intermediate:1;
  UCHAR DefectStatusDataRead:1;
  UCHAR DefectStatusDataGenerate:1;
  UCHAR Reserved0:4;
  UCHAR Reserved1[3];
} FEATURE_DATA_DVD_RW_RESTRICTED_OVERWRITE, *PFEATURE_DATA_DVD_RW_RESTRICTED_OVERWRITE;

typedef struct _FEATURE_DATA_CD_TRACK_AT_ONCE {
  FEATURE_HEADER Header;
  UCHAR RWSubchannelsRecordable:1;
  UCHAR CdRewritable:1;
  UCHAR TestWriteOk:1;
  UCHAR RWSubchannelPackedOk:1;
  UCHAR RWSubchannelRawOk:1;
  UCHAR Reserved1:1;
  UCHAR BufferUnderrunFree:1;
  UCHAR Reserved3:1;
  UCHAR Reserved2;
  UCHAR DataTypeSupported[2];
} FEATURE_DATA_CD_TRACK_AT_ONCE, *PFEATURE_DATA_CD_TRACK_AT_ONCE;

typedef struct _FEATURE_DATA_CD_MASTERING {
  FEATURE_HEADER Header;
  UCHAR RWSubchannelsRecordable:1;
  UCHAR CdRewritable:1;
  UCHAR TestWriteOk:1;
  UCHAR RawRecordingOk:1;
  UCHAR RawMultiSessionOk:1;
  UCHAR SessionAtOnceOk:1;
  UCHAR BufferUnderrunFree:1;
  UCHAR Reserved1:1;
  UCHAR MaximumCueSheetLength[3];
} FEATURE_DATA_CD_MASTERING, *PFEATURE_DATA_CD_MASTERING;

typedef struct _FEATURE_DATA_DVD_RECORDABLE_WRITE {
  FEATURE_HEADER Header;
  UCHAR Reserved1:1;
  UCHAR DVD_RW:1;
  UCHAR TestWrite:1;
  UCHAR RDualLayer:1;
  UCHAR Reserved02:2;
  UCHAR BufferUnderrunFree:1;
  UCHAR Reserved3:1;
  UCHAR Reserved4[3];
} FEATURE_DATA_DVD_RECORDABLE_WRITE, *PFEATURE_DATA_DVD_RECORDABLE_WRITE;

typedef struct _FEATURE_DATA_DDCD_READ {
  FEATURE_HEADER Header;
} FEATURE_DATA_DDCD_READ, *PFEATURE_DATA_DDCD_READ;

typedef struct _FEATURE_DATA_DDCD_R_WRITE {
  FEATURE_HEADER Header;
  UCHAR Reserved1:2;
  UCHAR TestWrite:1;
  UCHAR Reserved2:5;
  UCHAR Reserved3[3];
} FEATURE_DATA_DDCD_R_WRITE, *PFEATURE_DATA_DDCD_R_WRITE;

typedef struct _FEATURE_DATA_DDCD_RW_WRITE {
  FEATURE_HEADER Header;
  UCHAR Blank:1;
  UCHAR Intermediate:1;
  UCHAR Reserved1:6;
  UCHAR Reserved2[3];
} FEATURE_DATA_DDCD_RW_WRITE, *PFEATURE_DATA_DDCD_RW_WRITE;

typedef struct _FEATURE_DATA_LAYER_JUMP_RECORDING {
  FEATURE_HEADER Header;
  UCHAR Reserved0[3];
  UCHAR NumberOfLinkSizes;
#if !defined(__midl) && !defined(__WIDL__)
  UCHAR LinkSizes[0];
#endif
} FEATURE_DATA_LAYER_JUMP_RECORDING, *PFEATURE_DATA_LAYER_JUMP_RECORDING;

typedef struct _FEATURE_CD_RW_MEDIA_WRITE_SUPPORT {
  FEATURE_HEADER Header;
  UCHAR Reserved1;
  struct{
    UCHAR Subtype0:1;
    UCHAR Subtype1:1;
    UCHAR Subtype2:1;
    UCHAR Subtype3:1;
    UCHAR Subtype4:1;
    UCHAR Subtype5:1;
    UCHAR Subtype6:1;
    UCHAR Subtype7:1;
  } CDRWMediaSubtypeSupport;
  UCHAR Reserved2[2];
} FEATURE_CD_RW_MEDIA_WRITE_SUPPORT, *PFEATURE_CD_RW_MEDIA_WRITE_SUPPORT;

typedef struct _FEATURE_BD_R_PSEUDO_OVERWRITE {
  FEATURE_HEADER Header;
  UCHAR Reserved[4];
} FEATURE_BD_R_PSEUDO_OVERWRITE, *PFEATURE_BD_R_PSEUDO_OVERWRITE;

typedef struct _FEATURE_DATA_DVD_PLUS_RW_DUAL_LAYER {
  FEATURE_HEADER Header;
  UCHAR Write:1;
  UCHAR Reserved1:7;
  UCHAR CloseOnly:1;
  UCHAR QuickStart:1;
  UCHAR Reserved2:6;
  UCHAR Reserved3[2];
} FEATURE_DATA_DVD_PLUS_RW_DUAL_LAYER, *PFEATURE_DATA_DVD_PLUS_RW_DUAL_LAYER;

typedef struct _FEATURE_DATA_DVD_PLUS_R_DUAL_LAYER {
  FEATURE_HEADER Header;
  UCHAR Write:1;
  UCHAR Reserved1:7;
  UCHAR Reserved2[3];
} FEATURE_DATA_DVD_PLUS_R_DUAL_LAYER, *PFEATURE_DATA_DVD_PLUS_R_DUAL_LAYER;

typedef struct _BD_CLASS_SUPPORT_BITMAP {
  UCHAR Version8:1;
  UCHAR Version9:1;
  UCHAR Version10:1;
  UCHAR Version11:1;
  UCHAR Version12:1;
  UCHAR Version13:1;
  UCHAR Version14:1;
  UCHAR Version15:1;
  UCHAR Version0:1;
  UCHAR Version1:1;
  UCHAR Version2:1;
  UCHAR Version3:1;
  UCHAR Version4:1;
  UCHAR Version5:1;
  UCHAR Version6:1;
  UCHAR Version7:1;
} BD_CLASS_SUPPORT_BITMAP, *PBD_CLASS_SUPPORT_BITMAP;

typedef struct _FEATURE_BD_READ {
  FEATURE_HEADER Header;
  UCHAR Reserved[4];
  BD_CLASS_SUPPORT_BITMAP Class0BitmapBDREReadSupport;
  BD_CLASS_SUPPORT_BITMAP Class1BitmapBDREReadSupport;
  BD_CLASS_SUPPORT_BITMAP Class2BitmapBDREReadSupport;
  BD_CLASS_SUPPORT_BITMAP Class3BitmapBDREReadSupport;
  BD_CLASS_SUPPORT_BITMAP Class0BitmapBDRReadSupport;
  BD_CLASS_SUPPORT_BITMAP Class1BitmapBDRReadSupport;
  BD_CLASS_SUPPORT_BITMAP Class2BitmapBDRReadSupport;
  BD_CLASS_SUPPORT_BITMAP Class3BitmapBDRReadSupport;
  BD_CLASS_SUPPORT_BITMAP Class0BitmapBDROMReadSupport;
  BD_CLASS_SUPPORT_BITMAP Class1BitmapBDROMReadSupport;
  BD_CLASS_SUPPORT_BITMAP Class2BitmapBDROMReadSupport;
  BD_CLASS_SUPPORT_BITMAP Class3BitmapBDROMReadSupport;
} FEATURE_BD_READ, *PFEATURE_BD_READ;

typedef struct _FEATURE_BD_WRITE {
  FEATURE_HEADER Header;
  UCHAR SupportsVerifyNotRequired:1;
  UCHAR Reserved1:7;
  UCHAR Reserved2[3];
  BD_CLASS_SUPPORT_BITMAP Class0BitmapBDREWriteSupport;
  BD_CLASS_SUPPORT_BITMAP Class1BitmapBDREWriteSupport;
  BD_CLASS_SUPPORT_BITMAP Class2BitmapBDREWriteSupport;
  BD_CLASS_SUPPORT_BITMAP Class3BitmapBDREWriteSupport;
  BD_CLASS_SUPPORT_BITMAP Class0BitmapBDRWriteSupport;
  BD_CLASS_SUPPORT_BITMAP Class1BitmapBDRWriteSupport;
  BD_CLASS_SUPPORT_BITMAP Class2BitmapBDRWriteSupport;
  BD_CLASS_SUPPORT_BITMAP Class3BitmapBDRWriteSupport;
} FEATURE_BD_WRITE, *PFEATURE_BD_WRITE;

typedef struct _FEATURE_TSR {
  FEATURE_HEADER Header;
} FEATURE_TSR, *PFEATURE_TSR;

typedef struct _FEATURE_DATA_HDDVD_READ {
  FEATURE_HEADER Header;
  UCHAR Recordable:1;
  UCHAR Reserved0:7;
  UCHAR Reserved1;
  UCHAR Rewritable:1;
  UCHAR Reserved2:7;
  UCHAR Reserved3;
} FEATURE_DATA_HDDVD_READ, *PFEATURE_DATA_HDDVD_READ;

typedef struct _FEATURE_DATA_HDDVD_WRITE {
  FEATURE_HEADER Header;
  UCHAR Recordable:1;
  UCHAR Reserved0:7;
  UCHAR Reserved1;
  UCHAR Rewritable:1;
  UCHAR Reserved2:7;
  UCHAR Reserved3;
} FEATURE_DATA_HDDVD_WRITE, *PFEATURE_DATA_HDDVD_WRITE;

typedef struct _FEATURE_HYBRID_DISC {
  FEATURE_HEADER Header;
  UCHAR ResetImmunity:1;
  UCHAR Reserved1:7;
  UCHAR Reserved2[3];
} FEATURE_HYBRID_DISC, *PFEATURE_HYBRID_DISC;

typedef struct _FEATURE_DATA_POWER_MANAGEMENT {
  FEATURE_HEADER Header;
} FEATURE_DATA_POWER_MANAGEMENT, *PFEATURE_DATA_POWER_MANAGEMENT;

typedef struct _FEATURE_DATA_SMART {
  FEATURE_HEADER Header;
  UCHAR FaultFailureReportingPagePresent:1;
  UCHAR Reserved1:7;
  UCHAR Reserved02[3];
} FEATURE_DATA_SMART, *PFEATURE_DATA_SMART;

typedef struct _FEATURE_DATA_EMBEDDED_CHANGER {
  FEATURE_HEADER Header;
  UCHAR Reserved1:2;
  UCHAR SupportsDiscPresent:1;
  UCHAR Reserved2:1;
  UCHAR SideChangeCapable:1;
  UCHAR Reserved3:3;
  UCHAR Reserved4[2];
  UCHAR HighestSlotNumber:5;
  UCHAR Reserved:3;
} FEATURE_DATA_EMBEDDED_CHANGER, *PFEATURE_DATA_EMBEDDED_CHANGER;

typedef struct _FEATURE_DATA_CD_AUDIO_ANALOG_PLAY {
  FEATURE_HEADER Header;
  UCHAR SeperateVolume:1;
  UCHAR SeperateChannelMute:1;
  UCHAR ScanSupported:1;
  UCHAR Reserved1:5;
  UCHAR Reserved2;
  UCHAR NumerOfVolumeLevels[2];
} FEATURE_DATA_CD_AUDIO_ANALOG_PLAY, *PFEATURE_DATA_CD_AUDIO_ANALOG_PLAY;

typedef struct _FEATURE_DATA_MICROCODE_UPDATE {
  FEATURE_HEADER Header;
  UCHAR M5:1;
  UCHAR Reserved1:7;
  UCHAR Reserved2[3];
} FEATURE_DATA_MICROCODE_UPDATE, *PFEATURE_DATA_MICROCODE_UPDATE;

typedef struct _FEATURE_DATA_TIMEOUT {
  FEATURE_HEADER Header;
  UCHAR Group3:1;
  UCHAR Reserved1:7;
  UCHAR Reserved2;
  UCHAR UnitLength[2];
} FEATURE_DATA_TIMEOUT, *PFEATURE_DATA_TIMEOUT;

typedef struct _FEATURE_DATA_DVD_CSS {
  FEATURE_HEADER Header;
  UCHAR Reserved1[3];
  UCHAR CssVersion;
} FEATURE_DATA_DVD_CSS, *PFEATURE_DATA_DVD_CSS;

typedef struct _FEATURE_DATA_REAL_TIME_STREAMING {
  FEATURE_HEADER Header;
  UCHAR StreamRecording:1;
  UCHAR WriteSpeedInGetPerf:1;
  UCHAR WriteSpeedInMP2A:1;
  UCHAR SetCDSpeed:1;
  UCHAR ReadBufferCapacityBlock:1;
  UCHAR Reserved1:3;
  UCHAR Reserved2[3];
} FEATURE_DATA_REAL_TIME_STREAMING, *PFEATURE_DATA_REAL_TIME_STREAMING;

typedef struct _FEATURE_DATA_LOGICAL_UNIT_SERIAL_NUMBER {
  FEATURE_HEADER Header;
#if !defined(__midl) && !defined(__WIDL__)
  UCHAR SerialNumber[0];
#endif
} FEATURE_DATA_LOGICAL_UNIT_SERIAL_NUMBER, *PFEATURE_DATA_LOGICAL_UNIT_SERIAL_NUMBER;

typedef struct _FEATURE_MEDIA_SERIAL_NUMBER {
  FEATURE_HEADER Header;
} FEATURE_MEDIA_SERIAL_NUMBER, *PFEATURE_MEDIA_SERIAL_NUMBER;

typedef struct _FEATURE_DATA_DISC_CONTROL_BLOCKS_EX {
  UCHAR ContentDescriptor[4];
} FEATURE_DATA_DISC_CONTROL_BLOCKS_EX, *PFEATURE_DATA_DISC_CONTROL_BLOCKS_EX;

typedef struct _FEATURE_DATA_DISC_CONTROL_BLOCKS {
  FEATURE_HEADER Header;
#if !defined(__midl) && !defined(__WIDL__)
  FEATURE_DATA_DISC_CONTROL_BLOCKS_EX Data[0];
#endif
} FEATURE_DATA_DISC_CONTROL_BLOCKS, *PFEATURE_DATA_DISC_CONTROL_BLOCKS;

typedef struct _FEATURE_DATA_DVD_CPRM {
  FEATURE_HEADER Header;
  UCHAR Reserved0[3];
  UCHAR CPRMVersion;
} FEATURE_DATA_DVD_CPRM, *PFEATURE_DATA_DVD_CPRM;

typedef struct _FEATURE_DATA_FIRMWARE_DATE {
  FEATURE_HEADER Header;
  UCHAR Year[4];
  UCHAR Month[2];
  UCHAR Day[2];
  UCHAR Hour[2];
  UCHAR Minute[2];
  UCHAR Seconds[2];
  UCHAR Reserved[2];
} FEATURE_DATA_FIRMWARE_DATE, *PFEATURE_DATA_FIRMWARE_DATE;

typedef struct _FEATURE_DATA_AACS {
  FEATURE_HEADER Header;
  UCHAR BindingNonceGeneration:1;
  UCHAR Reserved0:7;
  UCHAR BindingNonceBlockCount;
  UCHAR NumberOfAGIDs:4;
  UCHAR Reserved1:4;
  UCHAR AACSVersion;
} FEATURE_DATA_AACS, *PFEATURE_DATA_AACS;

typedef struct _FEATURE_VCPS {
  FEATURE_HEADER Header;
  UCHAR Reserved[4];
} FEATURE_VCPS, *PFEATURE_VCPS;

typedef struct _FEATURE_DATA_RESERVED {
  FEATURE_HEADER Header;
#if !defined(__midl) && !defined(__WIDL__)
  UCHAR Data[0];
#endif
} FEATURE_DATA_RESERVED, *PFEATURE_DATA_RESERVED;

typedef struct _FEATURE_DATA_VENDOR_SPECIFIC {
  FEATURE_HEADER Header;
#if !defined(__midl) && !defined(__WIDL__)
  UCHAR VendorSpecificData[0];
#endif
} FEATURE_DATA_VENDOR_SPECIFIC, *PFEATURE_DATA_VENDOR_SPECIFIC;

typedef struct _GET_CONFIGURATION_IOCTL_INPUT {
  FEATURE_NUMBER Feature;
  ULONG RequestType;
  PVOID Reserved[2];
} GET_CONFIGURATION_IOCTL_INPUT, *PGET_CONFIGURATION_IOCTL_INPUT;

#if defined(_WIN64)
typedef struct _GET_CONFIGURATION_IOCTL_INPUT32 {
  FEATURE_NUMBER Feature;
  ULONG RequestType;
  VOID* UPOINTER_32 Reserved[2];
} GET_CONFIGURATION_IOCTL_INPUT32, *PGET_CONFIGURATION_IOCTL_INPUT32;
#endif

#ifdef __cplusplus
}
#endif
