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 DBML:1; 166 UCHAR DefaultToPrevent:1; 167 UCHAR Eject:1; 168 UCHAR Load: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 662