ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

ntddcdvd.h
Go to the documentation of this file.
00001 /*
00002  * ntddcdvd.h
00003  *
00004  * DVD IOCTL interface.
00005  *
00006  * This file is part of the w32api package.
00007  *
00008  * Contributors:
00009  *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
00010  *
00011  * THIS SOFTWARE IS NOT COPYRIGHTED
00012  *
00013  * This source code is offered for use in the public domain. You may
00014  * use, modify or distribute it freely.
00015  *
00016  * This code is distributed in the hope that it will be useful but
00017  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
00018  * DISCLAIMED. This includes but is not limited to warranties of
00019  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00020  *
00021  */
00022 
00023 #ifndef _NTDDCDVD_
00024 #define _NTDDCDVD_
00025 
00026 #include "ntddstor.h"
00027 
00028 #ifdef __cplusplus
00029 extern "C" {
00030 #endif
00031 
00032 #define IOCTL_DVD_BASE                    FILE_DEVICE_DVD
00033 
00034 #define IOCTL_STORAGE_SET_READ_AHEAD \
00035   CTL_CODE(IOCTL_STORAGE_BASE, 0x0100, METHOD_BUFFERED, FILE_READ_ACCESS)
00036 
00037 #define IOCTL_DVD_END_SESSION \
00038   CTL_CODE(IOCTL_DVD_BASE, 0x0403, METHOD_BUFFERED, FILE_READ_ACCESS)
00039 
00040 #define IOCTL_DVD_GET_REGION \
00041   CTL_CODE(IOCTL_DVD_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS)
00042 
00043 #define IOCTL_DVD_SEND_KEY2 \
00044   CTL_CODE(IOCTL_DVD_BASE, 0x0406, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
00045 
00046 #define IOCTL_DVD_READ_KEY \
00047   CTL_CODE(IOCTL_DVD_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS)
00048 
00049 #define IOCTL_DVD_READ_STRUCTURE \
00050   CTL_CODE(IOCTL_DVD_BASE, 0x0450, METHOD_BUFFERED, FILE_READ_ACCESS)
00051 
00052 #define IOCTL_DVD_SEND_KEY \
00053   CTL_CODE(IOCTL_DVD_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS)
00054 
00055 #define IOCTL_DVD_START_SESSION \
00056   CTL_CODE(IOCTL_DVD_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS)
00057 
00058 #define IOCTL_DVD_SET_READ_AHEAD \
00059   CTL_CODE(IOCTL_DVD_BASE, 0x0404, METHOD_BUFFERED, FILE_READ_ACCESS)
00060 
00061 
00062 typedef ULONG DVD_SESSION_ID, *PDVD_SESSION_ID;
00063 
00064 typedef struct _STORAGE_SET_READ_AHEAD {
00065     LARGE_INTEGER  TriggerAddress;
00066     LARGE_INTEGER  TargetAddress;
00067 } STORAGE_SET_READ_AHEAD, *PSTORAGE_SET_READ_AHEAD;
00068 
00069 typedef enum DVD_STRUCTURE_FORMAT {
00070   DvdPhysicalDescriptor,
00071   DvdCopyrightDescriptor,
00072   DvdDiskKeyDescriptor,
00073   DvdBCADescriptor,
00074   DvdManufacturerDescriptor,
00075   DvdMaxDescriptor
00076 } DVD_STRUCTURE_FORMAT, *PDVD_STRUCTURE_FORMAT;
00077 
00078 #include <pshpack1.h>
00079 typedef struct DVD_READ_STRUCTURE {
00080   LARGE_INTEGER  BlockByteOffset;
00081   DVD_STRUCTURE_FORMAT  Format;
00082   DVD_SESSION_ID  SessionId;
00083   UCHAR  LayerNumber;
00084 } DVD_READ_STRUCTURE, *PDVD_READ_STRUCTURE;
00085 #include <poppack.h>
00086 
00087 typedef struct _DVD_DESCRIPTOR_HEADER {
00088     USHORT Length;
00089     UCHAR Reserved[2];
00090     UCHAR Data[0];
00091 } DVD_DESCRIPTOR_HEADER, *PDVD_DESCRIPTOR_HEADER;
00092 
00093 #include <pshpack1.h>
00094 typedef struct _DVD_LAYER_DESCRIPTOR {
00095   UCHAR  BookVersion : 4;
00096   UCHAR  BookType : 4;
00097   UCHAR  MinimumRate : 4;
00098   UCHAR  DiskSize : 4;
00099   UCHAR  LayerType : 4;
00100   UCHAR  TrackPath : 1;
00101   UCHAR  NumberOfLayers : 2;
00102   UCHAR  Reserved1 : 1;
00103   UCHAR  TrackDensity : 4;
00104   UCHAR  LinearDensity : 4;
00105   ULONG  StartingDataSector;
00106   ULONG  EndDataSector;
00107   ULONG  EndLayerZeroSector;
00108   UCHAR  Reserved5 : 7;
00109   UCHAR  BCAFlag : 1;
00110   UCHAR  Reserved6;
00111 } DVD_LAYER_DESCRIPTOR, *PDVD_LAYER_DESCRIPTOR;
00112 #include <poppack.h>
00113 
00114 typedef struct _DVD_COPYRIGHT_DESCRIPTOR {
00115   UCHAR  CopyrightProtectionType;
00116   UCHAR  RegionManagementInformation;
00117   USHORT  Reserved;
00118 } DVD_COPYRIGHT_DESCRIPTOR, *PDVD_COPYRIGHT_DESCRIPTOR;
00119 
00120 typedef struct _DVD_DISK_KEY_DESCRIPTOR {
00121   UCHAR  DiskKeyData[2048];
00122 } DVD_DISK_KEY_DESCRIPTOR, *PDVD_DISK_KEY_DESCRIPTOR;
00123 
00124 typedef enum _DVD_KEY_TYPE {
00125     DvdChallengeKey = 0x01,
00126     DvdBusKey1,
00127     DvdBusKey2,
00128     DvdTitleKey,
00129     DvdAsf,
00130     DvdSetRpcKey = 0x6,
00131     DvdGetRpcKey = 0x8,
00132     DvdDiskKey = 0x80,
00133     DvdInvalidateAGID = 0x3f
00134 } DVD_KEY_TYPE;
00135 
00136 typedef struct _DVD_COPY_PROTECT_KEY {
00137     ULONG  KeyLength;
00138     DVD_SESSION_ID  SessionId;
00139     DVD_KEY_TYPE  KeyType;
00140     ULONG  KeyFlags;
00141     union {
00142         HANDLE  FileHandle;
00143         LARGE_INTEGER  TitleOffset;
00144     } Parameters;
00145     UCHAR  KeyData[0];
00146 } DVD_COPY_PROTECT_KEY, *PDVD_COPY_PROTECT_KEY;
00147 
00148 #define DVD_CHALLENGE_KEY_LENGTH          (12 + sizeof(DVD_COPY_PROTECT_KEY))
00149 #define DVD_BUS_KEY_LENGTH                (8 + sizeof(DVD_COPY_PROTECT_KEY))
00150 #define DVD_TITLE_KEY_LENGTH              (8 + sizeof(DVD_COPY_PROTECT_KEY))
00151 #define DVD_DISK_KEY_LENGTH               (2048 + sizeof(DVD_COPY_PROTECT_KEY))
00152 #define DVD_RPC_KEY_LENGTH                (sizeof(DVD_RPC_KEY) + sizeof(DVD_COPY_PROTECT_KEY))
00153 #define DVD_SET_RPC_KEY_LENGTH            (sizeof(DVD_SET_RPC_KEY) + sizeof(DVD_COPY_PROTECT_KEY))
00154 #define DVD_ASF_LENGTH                    (sizeof(DVD_ASF) + sizeof(DVD_COPY_PROTECT_KEY))
00155 
00156 #define DVD_END_ALL_SESSIONS              ((DVD_SESSION_ID) 0xffffffff)
00157 
00158 
00159 #define DVD_CGMS_RESERVED_MASK            0x00000078
00160 
00161 #define DVD_CGMS_COPY_PROTECT_MASK        0x00000018
00162 #define DVD_CGMS_COPY_PERMITTED           0x00000000
00163 #define DVD_CGMS_COPY_ONCE                0x00000010
00164 #define DVD_CGMS_NO_COPY                  0x00000018
00165 
00166 #define DVD_COPYRIGHT_MASK                0x00000040
00167 #define DVD_NOT_COPYRIGHTED               0x00000000
00168 #define DVD_COPYRIGHTED                   0x00000040
00169 
00170 #define DVD_SECTOR_PROTECT_MASK           0x00000020
00171 #define DVD_SECTOR_NOT_PROTECTED          0x00000000
00172 #define DVD_SECTOR_PROTECTED              0x00000020
00173 
00174 
00175 typedef struct _DVD_BCA_DESCRIPTOR {
00176   UCHAR  BCAInformation[0];
00177 } DVD_BCA_DESCRIPTOR, *PDVD_BCA_DESCRIPTOR;
00178 
00179 typedef struct _DVD_MANUFACTURER_DESCRIPTOR {
00180   UCHAR  ManufacturingInformation[2048];
00181 } DVD_MANUFACTURER_DESCRIPTOR, *PDVD_MANUFACTURER_DESCRIPTOR;
00182 
00183 typedef struct _DVD_RPC_KEY {
00184   UCHAR  UserResetsAvailable : 3;
00185   UCHAR  ManufacturerResetsAvailable : 3;
00186   UCHAR  TypeCode : 2;
00187   UCHAR  RegionMask;
00188   UCHAR  RpcScheme;
00189   UCHAR  Reserved2[1];
00190 } DVD_RPC_KEY, *PDVD_RPC_KEY;
00191 
00192 typedef struct _DVD_SET_RPC_KEY {
00193   UCHAR  PreferredDriveRegionCode;
00194   UCHAR  Reserved[3];
00195 } DVD_SET_RPC_KEY, *PDVD_SET_RPC_KEY;
00196 
00197 typedef struct _DVD_ASF {
00198   UCHAR  Reserved0[3];
00199   UCHAR  SuccessFlag : 1;
00200   UCHAR  Reserved1 : 7;
00201 } DVD_ASF, *PDVD_ASF;
00202 
00203 typedef struct _DVD_REGION {
00204     UCHAR  CopySystem;
00205     UCHAR  RegionData;
00206     UCHAR  SystemRegion;
00207     UCHAR  ResetCount;
00208 } DVD_REGION, *PDVD_REGION;
00209 
00210 #ifdef __cplusplus
00211 }
00212 #endif
00213 
00214 #endif /* _NTDDCDVD_ */

Generated on Wed May 23 2012 04:30:02 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.