ntddmmc.h 19 KB

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