Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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
