Chameleon

Chameleon Svn Source Tree

Root/branches/ErmaC/Enoch_Modules/i386/include/IOKit/storage/IODVDBlockStorageDevice.h

1/*
2 * Copyright (c) 1998-2009 Apple Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
12 *
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 */
23
24/*!
25 * @header IODVDBlockStorageDevice
26 * @abstract
27 * This header contains the IODVDBlockStorageDevice class definition.
28 */
29
30#ifndef_IODVDBLOCKSTORAGEDEVICE_H
31#define_IODVDBLOCKSTORAGEDEVICE_H
32
33#include <IOKit/storage/IODVDTypes.h>
34
35/*!
36 * @defined kIODVDBlockStorageDeviceClass
37 * @abstract
38 * kIODVDBlockStorageDeviceClass is the name of the IODVDBlockStorageDevice class.
39 * @discussion
40 * kIODVDBlockStorageDeviceClass is the name of the IODVDBlockStorageDevice class.
41 */
42
43#define kIODVDBlockStorageDeviceClass "IODVDBlockStorageDevice"
44
45#ifdef KERNEL
46#ifdef __cplusplus
47
48/*
49 * Kernel
50 */
51
52#include <IOKit/storage/IOCDBlockStorageDevice.h>
53
54/* Property used for matching, so the generic driver gets the nub it wants. */
55#definekIOBlockStorageDeviceTypeDVD"DVD"
56
57/*!
58 * @class
59 * IODVDBlockStorageDevice : public IOCDBlockStorageDevice
60 * @abstract
61 * The IODVDBlockStorageDevice class is a generic DVD block storage device
62 * abstraction.
63 * @discussion
64 * This class is the protocol for generic DVD functionality, independent of
65 * the physical connection protocol (e.g. SCSI, ATA, USB).
66 *
67 * The APIs are the union of CD APIs and all
68 * necessary new low-level DVD APIs.
69 *
70 * A subclass implements relay methods that translate our requests into
71 * calls to a protocol- and device-specific provider.
72 */
73
74class IODVDBlockStorageDevice : public IOCDBlockStorageDevice {
75
76 OSDeclareAbstractStructors(IODVDBlockStorageDevice)
77
78protected:
79
80 struct ExpansionData { /* */ };
81 ExpansionData * _expansionData;
82
83public:
84
85 /* Overrides from IORegistryEntry */
86
87 virtual boolinit(OSDictionary * properties);
88
89 /* New APIs for DVD */
90
91 virtual IOReturnreportKey(IOMemoryDescriptor *buffer,const DVDKeyClass keyClass,
92 const UInt32 lba,const UInt8 agid,const DVDKeyFormat keyFormat)= 0;
93
94 virtual IOReturnsendKey(IOMemoryDescriptor *buffer,const DVDKeyClass keyClass,
95 const UInt8 agid,const DVDKeyFormat keyFormat)= 0;
96
97#ifdef __LP64__
98 virtual IOReturnreadDVDStructure(IOMemoryDescriptor *buffer,const DVDStructureFormat format,
99 const UInt32 address,const UInt8 layer,const UInt8 agid)= 0;
100#else /* !__LP64__ */
101 virtual IOReturnreadDVDStructure(IOMemoryDescriptor *buffer,const DVDStructureFormat format,
102 const UInt32 address,const UInt8 layer,const UInt8 agid); /* 10.1.0 */
103#endif /* !__LP64__ */
104
105#ifdef __LP64__
106 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 0);
107#else /* !__LP64__ */
108 OSMetaClassDeclareReservedUsed(IODVDBlockStorageDevice, 0);
109#endif /* !__LP64__ */
110 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 1);
111 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 2);
112 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 3);
113 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 4);
114 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 5);
115 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 6);
116 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 7);
117 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 8);
118 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 9);
119 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 10);
120 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 11);
121 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 12);
122 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 13);
123 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 14);
124 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 15);
125 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 16);
126 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 17);
127 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 18);
128 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 19);
129 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 20);
130 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 21);
131 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 22);
132 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 23);
133 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 24);
134 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 25);
135 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 26);
136 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 27);
137 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 28);
138 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 29);
139 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 30);
140 OSMetaClassDeclareReservedUnused(IODVDBlockStorageDevice, 31);
141};
142
143#endif /* __cplusplus */
144#endif /* KERNEL */
145#endif /* !_IODVDBLOCKSTORAGEDEVICE_H */
146

Archive Download this file

Revision: 2238