Embed:
(wiki syntax)
Show/hide line numbers
ntddcdvd.h
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_H 00024 #define __NTDDCDVD_H 00025 00026 #if __GNUC__ >=3 00027 #pragma GCC system_header 00028 #endif 00029 00030 #ifdef __cplusplus 00031 extern "C" { 00032 #endif 00033 00034 #include "ntddk.h" 00035 #include "ntddstor.h" 00036 00037 #define IOCTL_DVD_BASE FILE_DEVICE_DVD 00038 00039 #define IOCTL_DVD_END_SESSION \ 00040 CTL_CODE(IOCTL_DVD_BASE, 0x0403, METHOD_BUFFERED, FILE_READ_ACCESS) 00041 00042 #define IOCTL_DVD_GET_REGION \ 00043 CTL_CODE(IOCTL_DVD_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS) 00044 00045 #define IOCTL_DVD_READ_KEY \ 00046 CTL_CODE(IOCTL_DVD_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS) 00047 00048 #define IOCTL_DVD_READ_STRUCTURE \ 00049 CTL_CODE(IOCTL_DVD_BASE, 0x0450, METHOD_BUFFERED, FILE_READ_ACCESS) 00050 00051 #define IOCTL_DVD_SEND_KEY \ 00052 CTL_CODE(IOCTL_DVD_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS) 00053 00054 #define IOCTL_DVD_START_SESSION \ 00055 CTL_CODE(IOCTL_DVD_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS) 00056 00057 #define IOCTL_DVD_SET_READ_AHEAD \ 00058 CTL_CODE(IOCTL_DVD_BASE, 0x0404, METHOD_BUFFERED, FILE_READ_ACCESS) 00059 00060 00061 typedef ULONG DVD_SESSION_ID, *PDVD_SESSION_ID; 00062 00063 typedef struct _STORAGE_SET_READ_AHEAD { 00064 LARGE_INTEGER TriggerAddress; 00065 LARGE_INTEGER TargetAddress; 00066 } STORAGE_SET_READ_AHEAD, *PSTORAGE_SET_READ_AHEAD; 00067 00068 typedef enum DVD_STRUCTURE_FORMAT { 00069 DvdPhysicalDescriptor, 00070 DvdCopyrightDescriptor, 00071 DvdDiskKeyDescriptor, 00072 DvdBCADescriptor, 00073 DvdManufacturerDescriptor, 00074 DvdMaxDescriptor 00075 } DVD_STRUCTURE_FORMAT, *PDVD_STRUCTURE_FORMAT; 00076 00077 #include <pshpack1.h> 00078 typedef struct DVD_READ_STRUCTURE { 00079 LARGE_INTEGER BlockByteOffset; 00080 DVD_STRUCTURE_FORMAT Format; 00081 DVD_SESSION_ID SessionId; 00082 UCHAR LayerNumber; 00083 } DVD_READ_STRUCTURE, *PDVD_READ_STRUCTURE; 00084 #include <poppack.h> 00085 00086 typedef struct _DVD_DESCRIPTOR_HEADER { 00087 USHORT Length; 00088 UCHAR Reserved[2]; 00089 UCHAR Data[0]; 00090 } DVD_DESCRIPTOR_HEADER, *PDVD_DESCRIPTOR_HEADER; 00091 00092 #include <pshpack1.h> 00093 typedef struct _DVD_LAYER_DESCRIPTOR { 00094 UCHAR BookVersion : 4; 00095 UCHAR BookType : 4; 00096 UCHAR MinimumRate : 4; 00097 UCHAR DiskSize : 4; 00098 UCHAR LayerType : 4; 00099 UCHAR TrackPath : 1; 00100 UCHAR NumberOfLayers : 2; 00101 UCHAR Reserved1 : 1; 00102 UCHAR TrackDensity : 4; 00103 UCHAR LinearDensity : 4; 00104 ULONG StartingDataSector; 00105 ULONG EndDataSector; 00106 ULONG EndLayerZeroSector; 00107 UCHAR Reserved5 : 7; 00108 UCHAR BCAFlag : 1; 00109 UCHAR Reserved6; 00110 } DVD_LAYER_DESCRIPTOR, *PDVD_LAYER_DESCRIPTOR; 00111 #include <poppack.h> 00112 00113 typedef struct _DVD_COPYRIGHT_DESCRIPTOR { 00114 UCHAR CopyrightProtectionType; 00115 UCHAR RegionManagementInformation; 00116 USHORT Reserved; 00117 } DVD_COPYRIGHT_DESCRIPTOR, *PDVD_COPYRIGHT_DESCRIPTOR; 00118 00119 typedef struct _DVD_DISK_KEY_DESCRIPTOR { 00120 UCHAR DiskKeyData[2048]; 00121 } DVD_DISK_KEY_DESCRIPTOR, *PDVD_DISK_KEY_DESCRIPTOR; 00122 00123 typedef enum _DVD_KEY_TYPE { 00124 DvdChallengeKey = 0x01, 00125 DvdBusKey1, 00126 DvdBusKey2, 00127 DvdTitleKey, 00128 DvdAsf, 00129 DvdSetRpcKey = 0x6, 00130 DvdGetRpcKey = 0x8, 00131 DvdDiskKey = 0x80, 00132 DvdInvalidateAGID = 0x3f 00133 } DVD_KEY_TYPE; 00134 00135 typedef struct _DVD_COPY_PROTECT_KEY { 00136 ULONG KeyLength; 00137 DVD_SESSION_ID SessionId; 00138 DVD_KEY_TYPE KeyType; 00139 ULONG KeyFlags; 00140 union { 00141 HANDLE FileHandle; 00142 LARGE_INTEGER TitleOffset; 00143 } Parameters; 00144 UCHAR KeyData[0]; 00145 } DVD_COPY_PROTECT_KEY, *PDVD_COPY_PROTECT_KEY; 00146 00147 #define DVD_CHALLENGE_KEY_LENGTH (12 + sizeof(DVD_COPY_PROTECT_KEY)) 00148 #define DVD_BUS_KEY_LENGTH (8 + sizeof(DVD_COPY_PROTECT_KEY)) 00149 #define DVD_TITLE_KEY_LENGTH (8 + sizeof(DVD_COPY_PROTECT_KEY)) 00150 #define DVD_DISK_KEY_LENGTH (2048 + sizeof(DVD_COPY_PROTECT_KEY)) 00151 #define DVD_RPC_KEY_LENGTH (sizeof(DVD_RPC_KEY) + sizeof(DVD_COPY_PROTECT_KEY)) 00152 #define DVD_SET_RPC_KEY_LENGTH (sizeof(DVD_SET_RPC_KEY) + sizeof(DVD_COPY_PROTECT_KEY)) 00153 #define DVD_ASF_LENGTH (sizeof(DVD_ASF) + sizeof(DVD_COPY_PROTECT_KEY)) 00154 00155 #define DVD_END_ALL_SESSIONS ((DVD_SESSION_ID) 0xffffffff) 00156 00157 00158 #define DVD_CGMS_RESERVED_MASK 0x00000078 00159 00160 #define DVD_CGMS_COPY_PROTECT_MASK 0x00000018 00161 #define DVD_CGMS_COPY_PERMITTED 0x00000000 00162 #define DVD_CGMS_COPY_ONCE 0x00000010 00163 #define DVD_CGMS_NO_COPY 0x00000018 00164 00165 #define DVD_COPYRIGHT_MASK 0x00000040 00166 #define DVD_NOT_COPYRIGHTED 0x00000000 00167 #define DVD_COPYRIGHTED 0x00000040 00168 00169 #define DVD_SECTOR_PROTECT_MASK 0x00000020 00170 #define DVD_SECTOR_NOT_PROTECTED 0x00000000 00171 #define DVD_SECTOR_PROTECTED 0x00000020 00172 00173 00174 typedef struct _DVD_BCA_DESCRIPTOR { 00175 UCHAR BCAInformation[0]; 00176 } DVD_BCA_DESCRIPTOR, *PDVD_BCA_DESCRIPTOR; 00177 00178 typedef struct _DVD_MANUFACTURER_DESCRIPTOR { 00179 UCHAR ManufacturingInformation[2048]; 00180 } DVD_MANUFACTURER_DESCRIPTOR, *PDVD_MANUFACTURER_DESCRIPTOR; 00181 00182 typedef struct _DVD_RPC_KEY { 00183 UCHAR UserResetsAvailable : 3; 00184 UCHAR ManufacturerResetsAvailable : 3; 00185 UCHAR TypeCode : 2; 00186 UCHAR RegionMask; 00187 UCHAR RpcScheme; 00188 UCHAR Reserved2[1]; 00189 } DVD_RPC_KEY, *PDVD_RPC_KEY; 00190 00191 typedef struct _DVD_SET_RPC_KEY { 00192 UCHAR PreferredDriveRegionCode; 00193 UCHAR Reserved[3]; 00194 } DVD_SET_RPC_KEY, *PDVD_SET_RPC_KEY; 00195 00196 typedef struct _DVD_ASF { 00197 UCHAR Reserved0[3]; 00198 UCHAR SuccessFlag : 1; 00199 UCHAR Reserved1 : 7; 00200 } DVD_ASF, *PDVD_ASF; 00201 00202 typedef struct _DVD_REGION { 00203 UCHAR CopySystem; 00204 UCHAR RegionData; 00205 UCHAR SystemRegion; 00206 UCHAR ResetCount; 00207 } DVD_REGION, *PDVD_REGION; 00208 00209 #ifdef __cplusplus 00210 } 00211 #endif 00212 00213 #endif /* __NTDDCDVD_H */
Generated on Tue Jul 12 2022 19:59:54 by
1.7.2