Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenntddcdvd.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
1.7.6.1
|