holdingarea/llvm/llvm-gcc4.2-2.7-x86-mingw32/include/ddk/ntddcdvd.h
author Matt Plumtree <matt.plumtree@nokia.com>
Thu, 07 Oct 2010 13:58:22 +0100
branchbug235_bringup_0
changeset 55 09263774e342
parent 20 d2d6724aef32
permissions -rw-r--r--
Move GLES20 source into standard locations Move Khronos headers into their respective components, to be exported by each. Remove hostthreadadapter as nothing outside of the vghwapiwrapper, which now contains the code, needs it

/*
 * ntddcdvd.h
 *
 * DVD IOCTL interface.
 *
 * This file is part of the w32api package.
 *
 * Contributors:
 *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
 *
 * THIS SOFTWARE IS NOT COPYRIGHTED
 *
 * This source code is offered for use in the public domain. You may
 * use, modify or distribute it freely.
 *
 * This code is distributed in the hope that it will be useful but
 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
 * DISCLAIMED. This includes but is not limited to warranties of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 */

#ifndef __NTDDCDVD_H
#define __NTDDCDVD_H

#if __GNUC__ >=3
#pragma GCC system_header
#endif

#ifdef __cplusplus
extern "C" {
#endif

#include "ntddk.h"
#include "ntddstor.h"

#define IOCTL_DVD_BASE                    FILE_DEVICE_DVD

#define IOCTL_DVD_END_SESSION \
  CTL_CODE(IOCTL_DVD_BASE, 0x0403, METHOD_BUFFERED, FILE_READ_ACCESS)

#define IOCTL_DVD_GET_REGION \
  CTL_CODE(IOCTL_DVD_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS)

#define IOCTL_DVD_READ_KEY \
  CTL_CODE(IOCTL_DVD_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS)

#define IOCTL_DVD_READ_STRUCTURE \
  CTL_CODE(IOCTL_DVD_BASE, 0x0450, METHOD_BUFFERED, FILE_READ_ACCESS)

#define IOCTL_DVD_SEND_KEY \
  CTL_CODE(IOCTL_DVD_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS)

#define IOCTL_DVD_START_SESSION \
  CTL_CODE(IOCTL_DVD_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS)

#define IOCTL_DVD_SET_READ_AHEAD \
  CTL_CODE(IOCTL_DVD_BASE, 0x0404, METHOD_BUFFERED, FILE_READ_ACCESS)


typedef ULONG DVD_SESSION_ID, *PDVD_SESSION_ID;

typedef struct _STORAGE_SET_READ_AHEAD {
	LARGE_INTEGER  TriggerAddress;
	LARGE_INTEGER  TargetAddress;
} STORAGE_SET_READ_AHEAD, *PSTORAGE_SET_READ_AHEAD;

typedef enum DVD_STRUCTURE_FORMAT {
  DvdPhysicalDescriptor,
  DvdCopyrightDescriptor,
  DvdDiskKeyDescriptor,
  DvdBCADescriptor,
  DvdManufacturerDescriptor,
  DvdMaxDescriptor
} DVD_STRUCTURE_FORMAT, *PDVD_STRUCTURE_FORMAT;

#include <pshpack1.h>
typedef struct DVD_READ_STRUCTURE {
  LARGE_INTEGER  BlockByteOffset;
  DVD_STRUCTURE_FORMAT  Format;
  DVD_SESSION_ID  SessionId;
  UCHAR  LayerNumber;
} DVD_READ_STRUCTURE, *PDVD_READ_STRUCTURE;
#include <poppack.h>

typedef struct _DVD_DESCRIPTOR_HEADER {
    USHORT Length;
    UCHAR Reserved[2];
    UCHAR Data[0];
} DVD_DESCRIPTOR_HEADER, *PDVD_DESCRIPTOR_HEADER;

#include <pshpack1.h>
typedef struct _DVD_LAYER_DESCRIPTOR {
  UCHAR  BookVersion : 4;
  UCHAR  BookType : 4;
  UCHAR  MinimumRate : 4;
  UCHAR  DiskSize : 4;
  UCHAR  LayerType : 4;
  UCHAR  TrackPath : 1;
  UCHAR  NumberOfLayers : 2;
  UCHAR  Reserved1 : 1;
  UCHAR  TrackDensity : 4;
  UCHAR  LinearDensity : 4;
  ULONG  StartingDataSector;
  ULONG  EndDataSector;
  ULONG  EndLayerZeroSector;
  UCHAR  Reserved5 : 7;
  UCHAR  BCAFlag : 1;
  UCHAR  Reserved6;
} DVD_LAYER_DESCRIPTOR, *PDVD_LAYER_DESCRIPTOR;
#include <poppack.h>

typedef struct _DVD_COPYRIGHT_DESCRIPTOR {
  UCHAR  CopyrightProtectionType;
  UCHAR  RegionManagementInformation;
  USHORT  Reserved;
} DVD_COPYRIGHT_DESCRIPTOR, *PDVD_COPYRIGHT_DESCRIPTOR;

typedef struct _DVD_DISK_KEY_DESCRIPTOR {
  UCHAR  DiskKeyData[2048];
} DVD_DISK_KEY_DESCRIPTOR, *PDVD_DISK_KEY_DESCRIPTOR;

typedef enum _DVD_KEY_TYPE {
	DvdChallengeKey = 0x01,
	DvdBusKey1,
	DvdBusKey2,
	DvdTitleKey,
	DvdAsf,
	DvdSetRpcKey = 0x6,
	DvdGetRpcKey = 0x8,
	DvdDiskKey = 0x80,
	DvdInvalidateAGID = 0x3f
} DVD_KEY_TYPE;

typedef struct _DVD_COPY_PROTECT_KEY {
	ULONG  KeyLength;
	DVD_SESSION_ID  SessionId;
	DVD_KEY_TYPE  KeyType;
	ULONG  KeyFlags;
	union {
		HANDLE  FileHandle;
		LARGE_INTEGER  TitleOffset;
	} Parameters;
	UCHAR  KeyData[0];
} DVD_COPY_PROTECT_KEY, *PDVD_COPY_PROTECT_KEY;

#define DVD_CHALLENGE_KEY_LENGTH          (12 + sizeof(DVD_COPY_PROTECT_KEY))
#define DVD_BUS_KEY_LENGTH                (8 + sizeof(DVD_COPY_PROTECT_KEY))
#define DVD_TITLE_KEY_LENGTH              (8 + sizeof(DVD_COPY_PROTECT_KEY))
#define DVD_DISK_KEY_LENGTH               (2048 + sizeof(DVD_COPY_PROTECT_KEY))
#define DVD_RPC_KEY_LENGTH                (sizeof(DVD_RPC_KEY) + sizeof(DVD_COPY_PROTECT_KEY))
#define DVD_SET_RPC_KEY_LENGTH            (sizeof(DVD_SET_RPC_KEY) + sizeof(DVD_COPY_PROTECT_KEY))
#define DVD_ASF_LENGTH                    (sizeof(DVD_ASF) + sizeof(DVD_COPY_PROTECT_KEY))

#define DVD_END_ALL_SESSIONS              ((DVD_SESSION_ID) 0xffffffff)


#define DVD_CGMS_RESERVED_MASK            0x00000078

#define DVD_CGMS_COPY_PROTECT_MASK        0x00000018
#define DVD_CGMS_COPY_PERMITTED           0x00000000
#define DVD_CGMS_COPY_ONCE                0x00000010
#define DVD_CGMS_NO_COPY                  0x00000018

#define DVD_COPYRIGHT_MASK                0x00000040
#define DVD_NOT_COPYRIGHTED               0x00000000
#define DVD_COPYRIGHTED                   0x00000040

#define DVD_SECTOR_PROTECT_MASK           0x00000020
#define DVD_SECTOR_NOT_PROTECTED          0x00000000
#define DVD_SECTOR_PROTECTED              0x00000020


typedef struct _DVD_BCA_DESCRIPTOR {
  UCHAR  BCAInformation[0];
} DVD_BCA_DESCRIPTOR, *PDVD_BCA_DESCRIPTOR;

typedef struct _DVD_MANUFACTURER_DESCRIPTOR {
  UCHAR  ManufacturingInformation[2048];
} DVD_MANUFACTURER_DESCRIPTOR, *PDVD_MANUFACTURER_DESCRIPTOR;

typedef struct _DVD_RPC_KEY {
  UCHAR  UserResetsAvailable : 3;
  UCHAR  ManufacturerResetsAvailable : 3;
  UCHAR  TypeCode : 2;
  UCHAR  RegionMask;
  UCHAR  RpcScheme;
  UCHAR  Reserved2[1];
} DVD_RPC_KEY, *PDVD_RPC_KEY;

typedef struct _DVD_SET_RPC_KEY {
  UCHAR  PreferredDriveRegionCode;
  UCHAR  Reserved[3];
} DVD_SET_RPC_KEY, *PDVD_SET_RPC_KEY;

typedef struct _DVD_ASF {
  UCHAR  Reserved0[3];
  UCHAR  SuccessFlag : 1;
  UCHAR  Reserved1 : 7;
} DVD_ASF, *PDVD_ASF;

typedef struct _DVD_REGION {
	UCHAR  CopySystem;
	UCHAR  RegionData;
	UCHAR  SystemRegion;
	UCHAR  ResetCount;
} DVD_REGION, *PDVD_REGION;

#ifdef __cplusplus
}
#endif

#endif /* __NTDDCDVD_H */