]> git.proxmox.com Git - mirror_edk2.git/blame - BaseTools/Conf/XMLSchema/DistributionPackage.xsd
Sync BaseTool trunk (version r2640) into EDKII BaseTools.
[mirror_edk2.git] / BaseTools / Conf / XMLSchema / DistributionPackage.xsd
CommitLineData
40d841f6 1<?xml version="1.0" encoding="UTF-8"?>
30fdf114
LG
2<!--
3Filename: DistributionPackage.xsd
4
4afd3d04 5Copyright (c) 2008 - 2012, Intel Corporation. All rights reserved.
30fdf114
LG
6
7This program and the accompanying materials are licensed and made available
8under the terms and conditions of the BSD License which may be found at
9 http://opensource.org/licenses/bsd-license.php
10
11THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13
14-->
0d2711a6 15<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
4afd3d04 16 targetNamespace="http://www.uefi.org/2012/1.0" xmlns="http://www.uefi.org/2012/1.0">
0d2711a6
LG
17 <xs:element name="DistributionPackage">
18 <xs:annotation>
4afd3d04
LG
19 <xs:documentation xml:lang="en-us"> This schema defines the UEFI/PI Distribution Package description (PKG)
20 file. It describes the content of:</xs:documentation>
21 <xs:documentation xml:lang="en-us"> 1) Package descriptions with definitions and headers.</xs:documentation>
22 <xs:documentation xml:lang="en-us"> 2) Modules in either source or binary format. (Note that Binary format
23 is for FFS leaf section file types only, complete FFS files cannot be distributed using this
24 distribution format.) </xs:documentation>
25 <xs:documentation xml:lang="en-us"> 3) The distribution of custom tools used to modify the binary images to
26 create UEFI/PI compliant images. </xs:documentation>
27 <xs:documentation xml:lang="en-us"> 4) Finally, it can be used to distribute other miscellaneous content
28 that is not specific to UEFI/PI images. </xs:documentation>
29 <xs:documentation xml:lang="en-us"> The Package Surface Area describes the content of packages, while the
30 Module Surface Area provides information relevant to source and/or binary distributions.
31 </xs:documentation>
0d2711a6
LG
32 </xs:annotation>
33 <xs:complexType>
34 <xs:sequence>
35 <xs:element ref="DistributionHeader" minOccurs="1" maxOccurs="1">
36 <xs:annotation>
4afd3d04
LG
37 <xs:documentation xml:lang="en-us"> This header contains (legal) information usually required
38 for distributing both binary and/or source code. </xs:documentation>
0d2711a6
LG
39 </xs:annotation>
40 </xs:element>
41 <xs:element ref="PackageSurfaceArea" minOccurs="0" maxOccurs="unbounded">
42 <xs:annotation>
4afd3d04
LG
43 <xs:documentation xml:lang="en-us"> The list of packages in this distribution. </xs:documentation>
44 <xs:documentation xml:lang="en-us"> Packages are groups of files and/or modules that are similar
45 in nature.</xs:documentation>
46 <xs:documentation xml:lang="en-us"> Packages are uniquely identified by a package GUID and a
47 package version. </xs:documentation>
48 <xs:documentation xml:lang="en-us"> A package can declare public mappings of C names to GUID
49 values. </xs:documentation>
50 <xs:documentation xml:lang="en-us"> A package can provide header files for library classes
51 and/or other industry standard definitions. </xs:documentation>
52 <xs:documentation xml:lang="en-us"> A package can also declare public mappings of platform
53 configuration database (PCD) &quot;knobs&quot; to control features and operation of modules
54 within a platform. </xs:documentation>
55 <xs:documentation xml:lang="en-us"> Finally, a package lists the library instances and/or
56 modules that are provided in a distribution package. </xs:documentation>
0d2711a6
LG
57 </xs:annotation>
58 </xs:element>
59 <xs:element ref="ModuleSurfaceArea" minOccurs="0" maxOccurs="unbounded">
60 <xs:annotation>
4afd3d04
LG
61 <xs:documentation xml:lang="en-us"> The listing of UEFI/PI compliant modules in this
62 distribution that are NOT part of a Package. Every module that is provided as part of a
63 package needs to be described in a PackageSurfaceArea.Modules section. </xs:documentation>
64 <xs:documentation xml:lang="en-us"> The ModuleSurfaceArea section describes how each module in a
65 distribution is coded, or, in the case of a binary module distribution, how it was built. </xs:documentation>
66 <xs:documentation xml:lang="en-us"> UEFI/PI compliant libraries and modules are uniquely
67 identified by the Module's GUID and version number. </xs:documentation>
68 <xs:documentation xml:lang="en-us"> This section will typically be used for modules that don't
69 require any additional files that would be included in a package. For example, the Enhanced
70 FAT driver binary does not need to have a package description, as no additional files are
71 provided. </xs:documentation>
0d2711a6
LG
72 </xs:annotation>
73 </xs:element>
74 <xs:element ref="Tools" minOccurs="0" maxOccurs="unbounded">
75 <xs:annotation>
4afd3d04
LG
76 <xs:documentation xml:lang="en-us"> This section is for distributing vendor specific executable
77 tools, tool source code and/or configuration files. These tools are primarily for
78 manipulating code and/or binary images. </xs:documentation>
79 <xs:documentation xml:lang="en-us"> Tools in this section can:</xs:documentation>
80 <xs:documentation xml:lang="en-us"> 1) Parse build meta-data files to create source code files
81 and build scripts. </xs:documentation>
82 <xs:documentation xml:lang="en-us"> 2) Modify image files to conform to UEFI/PI specifications. </xs:documentation>
83 <xs:documentation xml:lang="en-us"> 3) Generate binary files from certain types of text/unicode
84 files. </xs:documentation>
85 <xs:documentation xml:lang="en-us"> 4) Generate PCI Option Roms or Firmware Device images. </xs:documentation>
86 <xs:documentation xml:lang="en-us"> 5) Implement external encoding/decoding/signature/GUIDed
87 tools. </xs:documentation>
88 <xs:documentation xml:lang="en-us"> 6) Distribution Package create/install/remove tools.
89 </xs:documentation>
0d2711a6
LG
90 </xs:annotation>
91 </xs:element>
92 <xs:element ref="MiscellaneousFiles" minOccurs="0" maxOccurs="unbounded">
93 <xs:annotation>
4afd3d04
LG
94 <xs:documentation xml:lang="en-us"> The list of miscellaneous files in this distribution. Any
95 files that are not listed in either the Package, Module or Tools sections can be listed
96 here. This section can be used to distribute specifications for packages and modules that
97 are not &quot;industry standards&quot; such as a specification for a chipset or a video
98 device. </xs:documentation>
0d2711a6
LG
99 </xs:annotation>
100 </xs:element>
101 <xs:element ref="UserExtensions" minOccurs="0" maxOccurs="unbounded">
102 <xs:annotation>
4afd3d04
LG
103 <xs:documentation xml:lang="en-us"> The UserExtensions section is used to disseminate processing
104 instructions that may be custom to the content provided by the distribution. This section
105 contains information that is common to all aspects of this disribution. </xs:documentation>
0d2711a6
LG
106 </xs:annotation>
107 </xs:element>
108 </xs:sequence>
109
110 </xs:complexType>
111 </xs:element>
112 <!-- End of the DistributionPackage Description -->
113
114 <xs:element name="DistributionHeader">
115 <xs:annotation>
4afd3d04
LG
116 <xs:documentation xml:lang="en-us"> This section defines the content of the UEIF/PI compliant Distribution
117 Package Header. This is the only required element of a UEFI/PI compliant distribution package.
118 </xs:documentation>
0d2711a6
LG
119 </xs:annotation>
120 <xs:complexType>
121 <xs:sequence>
122 <xs:element minOccurs="1" maxOccurs="1" name="Name">
123 <xs:annotation>
4afd3d04
LG
124 <xs:documentation xml:lang="en-us"> This is the User Interface Name for this Distribution
125 Package. </xs:documentation>
126 <xs:documentation xml:lang="en-us"> Each Distribution Package is uniquely identified by it's
127 GUID and Version number. </xs:documentation>
0d2711a6
LG
128 </xs:annotation>
129 <xs:complexType>
130 <xs:simpleContent>
131 <xs:extension base="xs:normalizedString">
132 <xs:attribute name="BaseName" type="xs:NMTOKEN" use="optional">
133 <xs:annotation>
4afd3d04
LG
134 <xs:documentation xml:lang="en-us"> The reference name of the Distribution
135 Package file. This single word name can be used by tools as a keyword or for
136 directory and/or file creation. </xs:documentation>
137 <xs:documentation xml:lang="en-us"> White space and special characters (dash and
138 underscore characters may be used) are not permitted in this name.
139 </xs:documentation>
0d2711a6
LG
140 </xs:annotation>
141 </xs:attribute>
142 </xs:extension>
143 </xs:simpleContent>
144 </xs:complexType>
145 </xs:element>
146 <xs:element minOccurs="1" maxOccurs="1" name="GUID">
147 <xs:annotation>
4afd3d04
LG
148 <xs:documentation xml:lang="en-us"> This 128-bit GUID and the Version attribute uniquely
149 identify this Distribution Package. </xs:documentation>
150 <xs:documentation xml:lang="en-us"> Backward compatible releases of a distribution package need
151 only change the version number, while non-backward compatible changes require the GUID to
152 change (resetting the version number to 1.0 is optional.) </xs:documentation>
0d2711a6
LG
153 </xs:annotation>
154 <xs:complexType>
155 <xs:simpleContent>
156 <xs:extension base="RegistryFormatGuid">
157 <xs:attribute name="Version" type="xs:decimal" use="required">
158 <xs:annotation>
4afd3d04
LG
159 <xs:documentation xml:lang="en-us"> This value, along with the GUID, is used to
160 uniquely identify this object. The higher the number, the more recent the
161 content. </xs:documentation>
0d2711a6
LG
162 </xs:annotation>
163 </xs:attribute>
164 </xs:extension>
165 </xs:simpleContent>
166 </xs:complexType>
167 </xs:element>
168 <xs:element minOccurs="1" maxOccurs="1" name="Vendor" type="xs:normalizedString">
169 <xs:annotation>
4afd3d04
LG
170 <xs:documentation xml:lang="en-us"> A string identifying who created this distribution package.
171 </xs:documentation>
0d2711a6
LG
172 </xs:annotation>
173 </xs:element>
174 <xs:element minOccurs="1" maxOccurs="1" name="Date" type="xs:dateTime">
175 <xs:annotation>
4afd3d04
LG
176 <xs:documentation xml:lang="en-us"> The date and time this distribution was created. The format
177 is: YYYY-MM-DDThh:mm:ss, for example: 2001-01-31T13:30:00 (note the T character separator
178 between the calendar date and the time. </xs:documentation>
0d2711a6
LG
179 </xs:annotation>
180 </xs:element>
4afd3d04 181 <xs:element minOccurs="1" maxOccurs="unbounded" name="Copyright">
0d2711a6 182 <xs:annotation>
4afd3d04
LG
183 <xs:documentation xml:lang="en-us"> The copyright for this file that is generated by the creator
184 of the distribution. If a derivative work is generated from an existing distribution, then
185 the existing copyright must be maintained, and additional copyrights may be appended to the
186 end of this element. It may also be the primary copyright for all code provided in the
187 Distribution Package. </xs:documentation>
0d2711a6 188 </xs:annotation>
4afd3d04
LG
189 <xs:complexType>
190 <xs:simpleContent>
191 <xs:extension base="xs:string">
192 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
193 </xs:extension>
194 </xs:simpleContent>
195 </xs:complexType>
196
0d2711a6 197 </xs:element>
4afd3d04 198 <xs:element minOccurs="1" maxOccurs="unbounded" name="License">
0d2711a6 199 <xs:annotation>
4afd3d04
LG
200 <xs:documentation xml:lang="en-us"> A license that describes any restrictions on the use of this
201 distribution. If a derivative work is allowed by the original license and a derivative work
202 is generated from an existing distribution, then the existing license must be maintained,
203 and additional licenses may be appended to the end of this element. It may also be the
204 primary license for all code provided in the distribution file. Alternatively, this may
205 point to a filename that contains the License. The file (included in the content zip file)
206 will be stored in the same location as the distribution package's .pkg file.
0d2711a6
LG
207 </xs:documentation>
208 </xs:annotation>
4afd3d04
LG
209 <xs:complexType>
210 <xs:simpleContent>
211 <xs:extension base="xs:string">
212 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
213 </xs:extension>
214 </xs:simpleContent>
215 </xs:complexType>
0d2711a6 216 </xs:element>
4afd3d04 217 <xs:element minOccurs="1" maxOccurs="unbounded" name="Abstract">
0d2711a6 218 <xs:annotation>
4afd3d04
LG
219 <xs:documentation xml:lang="en-us"> A one line description of the Distribution Package.
220 </xs:documentation>
0d2711a6 221 </xs:annotation>
4afd3d04
LG
222 <xs:complexType>
223 <xs:simpleContent>
224 <xs:extension base="xs:normalizedString">
225 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
226 </xs:extension>
227 </xs:simpleContent>
228 </xs:complexType>
0d2711a6 229 </xs:element>
4afd3d04 230 <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
0d2711a6 231 <xs:annotation>
4afd3d04
LG
232 <xs:documentation xml:lang="en-us"> A complete description of the Distribution Package. This
233 description may include the release name of the file, the version of the file, and a
234 complete description of the file contents and/or features including a description of the
235 updates since the previous file release. </xs:documentation>
0d2711a6 236 </xs:annotation>
4afd3d04
LG
237 <xs:complexType>
238 <xs:simpleContent>
239 <xs:extension base="xs:string">
240 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
241 </xs:extension>
242 </xs:simpleContent>
243 </xs:complexType>
0d2711a6
LG
244 </xs:element>
245 <xs:element minOccurs="0" maxOccurs="1" name="Signature" type="Md5Sum">
246 <xs:annotation>
4afd3d04
LG
247 <xs:documentation xml:lang="en-us"> The packaging utilities will use this MD5 sum value of the
248 included ZIP file containing files and/or code. If this element is not present, then
249 installation tools should assume that the content is correct, or that other methods may be
250 needed to verify content. </xs:documentation>
0d2711a6
LG
251 </xs:annotation>
252 </xs:element>
4afd3d04 253 <xs:element minOccurs="1" maxOccurs="1" name="XmlSpecification" type="xs:decimal" default="1.1">
0d2711a6
LG
254 <xs:annotation>
255 <xs:documentation xml:lang="en-us"> This version of this XML Schema is 1.1 </xs:documentation>
256 <xs:documentation xml:lang="en-us"> Changes to 1.1 from 1.0 </xs:documentation>
4afd3d04
LG
257 <xs:documentation xml:lang="en-us"> #1 Updated to present date and new version which is
258 important to reflect the present state of the matter</xs:documentation>
259 <xs:documentation xml:lang="en-us"> #2 Added definition/enumeration of UNDEFIND type 2 is
260 important since there is a large body of legacy code for which the GUID’s and other
261 code/data objects were not decorated with their usage. This document will allow for
262 importing today’s source artifacts and producing decorations using the ‘Undefined’ versus
263 having an error</xs:documentation>
264 <xs:documentation xml:lang="en-us">#3 Allow for inclusion of ARM and future architecture
265 types</xs:documentation>
0d2711a6
LG
266 </xs:annotation>
267 </xs:element>
268 </xs:sequence>
269 <xs:attribute name="ReadOnly" type="xs:boolean" default="false" use="optional">
270 <xs:annotation>
4afd3d04
LG
271 <xs:documentation xml:lang="en-us"> If set to true, all content within this Distribution Package
272 should NOT be modified. The default permits modification of all content. </xs:documentation>
0d2711a6
LG
273 </xs:annotation>
274 </xs:attribute>
275 <xs:attribute name="RePackage" type="xs:boolean" default="false" use="optional">
276 <xs:annotation>
4afd3d04
LG
277 <xs:documentation xml:lang="en-us"> If set to true, then the content can be repackaged into another
278 distribution package. The default prohibits repackaging the Distribution content.
279 </xs:documentation>
0d2711a6
LG
280 </xs:annotation>
281 </xs:attribute>
282 </xs:complexType>
283 </xs:element>
284 <!-- End of the DistributionHeader element. -->
285
286 <xs:element name="PackageSurfaceArea">
287 <xs:annotation>
4afd3d04
LG
288 <xs:documentation xml:lang="en-us"> A package is a collection of related objects - Includes, Libraries and
289 Modules. </xs:documentation>
290 <xs:documentation xml:lang="en-us"> Each package is uniquely identified by it's GUID and Version number.
291 Backward compatible releases of a package need only change the version number, while non-backward
292 compatible changes require the GUID to change (resetting the version number to 1.0 is optional.)
293 </xs:documentation>
0d2711a6
LG
294 </xs:annotation>
295 <xs:complexType>
296 <xs:sequence>
297
298 <xs:element minOccurs="1" maxOccurs="1" name="Header">
299 <xs:complexType>
300 <xs:sequence>
301 <xs:element minOccurs="1" maxOccurs="1" name="Name">
302 <xs:annotation>
4afd3d04
LG
303 <xs:documentation xml:lang="en-us"> This is the User Interface Name for this
304 package. </xs:documentation>
0d2711a6
LG
305 </xs:annotation>
306 <xs:complexType>
307 <xs:simpleContent>
308 <xs:extension base="xs:normalizedString">
4afd3d04 309 <xs:attribute name="BaseName" type="xs:NMTOKEN" use="required">
0d2711a6 310 <xs:annotation>
4afd3d04
LG
311 <xs:documentation xml:lang="en-us"> This is a single word BaseName
312 of the package. This BaseName can be used by tools as a keyword
313 and for directory/file creation. </xs:documentation>
0d2711a6
LG
314 </xs:annotation>
315 </xs:attribute>
316 </xs:extension>
317 </xs:simpleContent>
318 </xs:complexType>
319 </xs:element>
320 <xs:element minOccurs="1" maxOccurs="1" name="GUID">
321 <xs:annotation>
4afd3d04
LG
322 <xs:documentation xml:lang="en-us"> This GUID and the Version attribute uniquely
323 identify a given package. </xs:documentation>
0d2711a6
LG
324 </xs:annotation>
325 <xs:complexType>
326 <xs:simpleContent>
327 <xs:extension base="RegistryFormatGuid">
4afd3d04 328 <xs:attribute name="Version" type="xs:decimal" use="required">
0d2711a6 329 <xs:annotation>
4afd3d04
LG
330 <xs:documentation xml:lang="en-us"> This value, along with the GUID,
331 is used to uniquely identify this object. </xs:documentation>
332 <xs:documentation xml:lang="en-us"> Backward compatible changes must
333 make sure this number is incremented from the most recent
334 version. Non-backward compatible changes require a new GUID, and
335 the version can be reset. </xs:documentation>
0d2711a6
LG
336 </xs:annotation>
337 </xs:attribute>
338 </xs:extension>
339 </xs:simpleContent>
340 </xs:complexType>
341 </xs:element>
4afd3d04 342 <xs:element minOccurs="0" maxOccurs="unbounded" name="Copyright">
0d2711a6 343 <xs:annotation>
4afd3d04
LG
344 <xs:documentation xml:lang="en-us"> If the package requires a different copyright
345 than the distribution package, this element can list one or more copyright
346 lines. </xs:documentation>
0d2711a6 347 </xs:annotation>
4afd3d04
LG
348 <xs:complexType>
349 <xs:simpleContent>
350 <xs:extension base="xs:string">
351 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
352 />
353 </xs:extension>
354 </xs:simpleContent>
355 </xs:complexType>
356
0d2711a6 357 </xs:element>
4afd3d04 358 <xs:element minOccurs="0" maxOccurs="unbounded" name="License">
0d2711a6 359 <xs:annotation>
4afd3d04
LG
360 <xs:documentation xml:lang="en-us"> If the package requires licenses that are
361 different from the distribution package license, this element can contain one or
362 more license text paragraphs (or license filenames.) </xs:documentation>
0d2711a6 363 </xs:annotation>
4afd3d04
LG
364 <xs:complexType>
365 <xs:simpleContent>
366 <xs:extension base="xs:string">
367 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
368 />
369 </xs:extension>
370 </xs:simpleContent>
371 </xs:complexType>
372
0d2711a6 373 </xs:element>
4afd3d04 374 <xs:element minOccurs="0" maxOccurs="unbounded" name="Abstract">
0d2711a6 375 <xs:annotation>
4afd3d04
LG
376 <xs:documentation xml:lang="en-us"> A one line description of this package.
377 </xs:documentation>
0d2711a6 378 </xs:annotation>
4afd3d04
LG
379 <xs:complexType>
380 <xs:simpleContent>
381 <xs:extension base="xs:normalizedString">
382 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
383 />
384 </xs:extension>
385 </xs:simpleContent>
386 </xs:complexType>
0d2711a6 387 </xs:element>
4afd3d04 388 <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
0d2711a6 389 <xs:annotation>
4afd3d04
LG
390 <xs:documentation xml:lang="en-us"> A complete description of a package. This
391 description may include the release name of the package, the version of the
392 package, and a complete description of the package contents and/or features
393 including a description of the updates since the previous package’s release.
394 </xs:documentation>
0d2711a6 395 </xs:annotation>
4afd3d04
LG
396 <xs:complexType>
397 <xs:simpleContent>
398 <xs:extension base="xs:string">
399 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
400 />
401 </xs:extension>
402 </xs:simpleContent>
403 </xs:complexType>
0d2711a6 404 </xs:element>
4afd3d04 405 <xs:element minOccurs="1" maxOccurs="1" name="PackagePath" type="xs:anyURI">
0d2711a6 406 <xs:annotation>
4afd3d04
LG
407 <xs:documentation xml:lang="en-us"> This element is the location (in the ZIP file)
408 for the root directory of a package. </xs:documentation>
0d2711a6
LG
409 </xs:annotation>
410 </xs:element>
411 </xs:sequence>
412 </xs:complexType>
413 </xs:element>
414 <!-- End of PackageSurfaceArea Header element. -->
415
416 <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">
417 <xs:annotation>
4afd3d04
LG
418 <xs:documentation xml:lang="en-us"> The term cloned is used here to indicate that this package
419 as been copied and modified to a completely different package. An example might be for a new
420 generation of chipsets that have few or no elements in common with the original.
421 </xs:documentation>
0d2711a6
LG
422 </xs:annotation>
423 <xs:complexType>
424 <xs:sequence>
425 <xs:element minOccurs="1" maxOccurs="1" name="GUID">
426 <xs:annotation>
4afd3d04
LG
427 <xs:documentation xml:lang="en-us"> This GUID and the Version attribute uniquely
428 identify the Package that this Package was copied from. </xs:documentation>
0d2711a6
LG
429 </xs:annotation>
430 <xs:complexType>
431 <xs:simpleContent>
432 <xs:extension base="RegistryFormatGuid">
4afd3d04 433 <xs:attribute name="Version" type="xs:decimal" use="required">
0d2711a6 434 <xs:annotation>
4afd3d04
LG
435 <xs:documentation xml:lang="en-us"> This value, along with the GUID,
436 is used to uniquely identify the package that this package was
437 cloned from. </xs:documentation>
0d2711a6
LG
438 </xs:annotation>
439 </xs:attribute>
440 </xs:extension>
441 </xs:simpleContent>
442 </xs:complexType>
443 </xs:element>
444 </xs:sequence>
445 </xs:complexType>
446 </xs:element>
447 <!-- End of PackageSurfaceArea ClonedFrom element. -->
448
449 <xs:element minOccurs="0" maxOccurs="1" name="LibraryClassDeclarations">
450 <xs:annotation>
4afd3d04
LG
451 <xs:documentation xml:lang="en-us"> Library Classes are public interfaces that can be used by
452 modules. One or more library instances can implement a library class, however only one
453 library instance can be linked to an individual module. This provides the platform
454 integrator with the flexibility of choosing one library instance's implementation over a
0d2711a6
LG
455 different library instance. </xs:documentation>
456 </xs:annotation>
457 <xs:complexType>
458 <xs:sequence>
459 <xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass">
460 <xs:complexType>
461 <xs:sequence>
4afd3d04 462 <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile" type="xs:anyURI">
0d2711a6 463 <xs:annotation>
4afd3d04
LG
464 <xs:documentation xml:lang="en-us"> The header file provides definitions
465 and function prototypes for a library class. Modules can be coded
466 against these functions, using the definitions in this header,
467 without concerning themselves about the libraries' implementation
468 details. This is a PackagePath relative path and filename for the
469 include file. </xs:documentation>
0d2711a6
LG
470 </xs:annotation>
471 </xs:element>
4afd3d04 472 <xs:element minOccurs="0" maxOccurs="1" name="RecommendedInstance">
0d2711a6
LG
473 <xs:complexType>
474 <xs:sequence>
4afd3d04
LG
475 <xs:element minOccurs="1" maxOccurs="1" name="GUID">
476 <xs:annotation>
477 <xs:documentation xml:lang="en-us"> This GUID and the
478 Version attribute uniquely identify the Recommended Library
479 Instance. </xs:documentation>
480 </xs:annotation>
481 <xs:complexType>
482 <xs:simpleContent>
483 <xs:extension base="RegistryFormatGuid">
484 <xs:attribute name="Version" type="xs:decimal"
485 use="optional">
486 <xs:annotation>
487 <xs:documentation xml:lang="en-us"> This value, along with
488 the GUID, is used to uniquely identify this object. If this
489 value is not specified, then any version of the library
490 instance is recommended. </xs:documentation>
491 </xs:annotation>
492 </xs:attribute>
493 </xs:extension>
494 </xs:simpleContent>
495 </xs:complexType>
496 </xs:element>
0d2711a6
LG
497 </xs:sequence>
498 </xs:complexType>
499 </xs:element>
4afd3d04 500 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
0d2711a6
LG
501 </xs:sequence>
502 <xs:attribute name="Keyword" type="xs:NCName" use="required">
503 <xs:annotation>
4afd3d04
LG
504 <xs:documentation xml:lang="en-us"> The single word name of the Library
505 Class that module developers will use to identify a library class
506 dependency. </xs:documentation>
0d2711a6
LG
507 </xs:annotation>
508 </xs:attribute>
509 <xs:attributeGroup ref="SupportedArchMod"/>
510 </xs:complexType>
511 </xs:element>
512 </xs:sequence>
513 </xs:complexType>
514 </xs:element>
515 <!-- End of PackageSurfaceArea LibraryClassDeclarations element. -->
516
517 <xs:element minOccurs="0" maxOccurs="1" name="IndustryStandardIncludes">
518 <xs:annotation>
4afd3d04
LG
519 <xs:documentation xml:lang="en-us"> This section is used to list header files for industry
520 standards not under the auspices of UEFI.org. For example, headers that contain definitions
521 and data structures for the USB specifications. </xs:documentation>
0d2711a6
LG
522 </xs:annotation>
523 <xs:complexType>
524 <xs:sequence>
4afd3d04 525 <xs:element minOccurs="1" maxOccurs="unbounded" name="IndustryStandardHeader">
0d2711a6
LG
526 <xs:complexType>
527 <xs:sequence>
4afd3d04 528 <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile" type="xs:anyURI">
0d2711a6 529 <xs:annotation>
4afd3d04
LG
530 <xs:documentation xml:lang="en-us"> The package relative path and
531 filename (in the content zip file) of the industry standard include
532 file. </xs:documentation>
0d2711a6
LG
533 </xs:annotation>
534 </xs:element>
4afd3d04 535 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
0d2711a6
LG
536 </xs:sequence>
537 </xs:complexType>
538 </xs:element>
539 </xs:sequence>
540 </xs:complexType>
541 </xs:element>
542 <!-- End of PackageSurfaceArea IndustryStdIncludes element. -->
543
544 <xs:element minOccurs="0" maxOccurs="1" name="PackageIncludes">
545 <xs:annotation>
4afd3d04
LG
546 <xs:documentation xml:lang="en-us"> All top level header files that are included by a package
547 that are not listed above. They cannot be:</xs:documentation>
0d2711a6
LG
548 <xs:documentation xml:lang="en-us"> 1) Local to a module (module specific.) </xs:documentation>
549 <xs:documentation xml:lang="en-us"> 2) An industry standard header. </xs:documentation>
4afd3d04 550 <xs:documentation xml:lang="en-us"> 3) A library class header. </xs:documentation>
0d2711a6
LG
551 </xs:annotation>
552 <xs:complexType>
553 <xs:sequence>
554 <xs:element minOccurs="1" maxOccurs="unbounded" name="PackageHeader">
555 <xs:complexType>
556 <xs:sequence>
557 <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile">
558 <xs:annotation>
4afd3d04
LG
559 <xs:documentation xml:lang="en-us"> This is the Package relative path
560 and filename location within the content ZIP file.
561 </xs:documentation>
0d2711a6
LG
562 </xs:annotation>
563 <xs:complexType>
564 <xs:simpleContent>
4afd3d04
LG
565 <xs:extension base="xs:anyURI">
566 <xs:attributeGroup ref="SupportedArchMod"/>
567 </xs:extension>
0d2711a6
LG
568 </xs:simpleContent>
569 </xs:complexType>
570 </xs:element>
4afd3d04 571 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
0d2711a6
LG
572 </xs:sequence>
573 </xs:complexType>
574 </xs:element>
575 </xs:sequence>
576 </xs:complexType>
577 </xs:element>
578 <!-- End of PackageSurfaceArea PackageIncluces element. -->
579
580 <xs:element minOccurs="0" maxOccurs="1" name="Modules">
581 <xs:complexType>
582 <xs:sequence>
583 <xs:element ref="ModuleSurfaceArea" minOccurs="1" maxOccurs="unbounded">
584 <xs:annotation>
4afd3d04
LG
585 <xs:documentation xml:lang="en-us"> This section lists the Module Surface Area for
586 all modules provided with this package. </xs:documentation>
0d2711a6
LG
587 </xs:annotation>
588 </xs:element>
589 </xs:sequence>
590 </xs:complexType>
591 </xs:element>
592 <!-- End of PackageSurfaceArea Modules element. -->
593
594 <xs:element minOccurs="0" maxOccurs="1" name="GuidDeclarations">
595 <xs:annotation>
4afd3d04
LG
596 <xs:documentation xml:lang="en-us"> This section defines the mapping of GUID C names to GUID
597 values as a Registry Format GUID. </xs:documentation>
598 <xs:documentation xml:lang="en-us"> Modules that use these GUIDs must specify their dependency
599 on this package. </xs:documentation>
0d2711a6
LG
600 </xs:annotation>
601 <xs:complexType>
602 <xs:sequence>
603 <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
604 <xs:annotation>
4afd3d04 605 <xs:documentation xml:lang="en-us"> Individual GUID Declarations </xs:documentation>
0d2711a6
LG
606 </xs:annotation>
607 <xs:complexType>
608 <xs:sequence>
4afd3d04 609 <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
0d2711a6
LG
610 <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"
611 type="RegistryFormatGuid"/>
4afd3d04 612 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
0d2711a6 613 </xs:sequence>
4afd3d04
LG
614 <xs:attribute name="UiName" type="xs:normalizedString" use="optional"/>
615 <xs:attribute name="GuidTypes" type="GuidListType" use="optional"/>
0d2711a6
LG
616 <xs:attributeGroup ref="SupportedArchMod"/>
617 </xs:complexType>
618 </xs:element>
619 </xs:sequence>
620 </xs:complexType>
621 </xs:element>
622 <!-- End of PackageSurfaceArea GuidDeclarations element. -->
623
624 <xs:element minOccurs="0" maxOccurs="1" name="ProtocolDeclarations">
625 <xs:annotation>
4afd3d04
LG
626 <xs:documentation xml:lang="en-us"> This section defines the mapping of Protocol C names to GUID
627 values as a Registry Format GUID. </xs:documentation>
628 <xs:documentation xml:lang="en-us"> Modules that use these Protocols must specify their
629 dependency on this package. </xs:documentation>
0d2711a6
LG
630 </xs:annotation>
631 <xs:complexType>
632 <xs:sequence>
633 <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
634 <xs:annotation>
4afd3d04
LG
635 <xs:documentation xml:lang="en-us"> Individual Protocol Declarations
636 </xs:documentation>
0d2711a6
LG
637 </xs:annotation>
638 <xs:complexType>
639 <xs:sequence>
4afd3d04 640 <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
0d2711a6
LG
641 <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"
642 type="RegistryFormatGuid"/>
4afd3d04 643 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
0d2711a6 644 </xs:sequence>
4afd3d04 645 <xs:attribute name="UiName" type="xs:normalizedString" use="optional"/>
0d2711a6
LG
646 <xs:attributeGroup ref="SupportedArchMod"/>
647 </xs:complexType>
648 </xs:element>
649 </xs:sequence>
650 </xs:complexType>
651 </xs:element>
652 <!-- End of PackageSurfaceArea ProtocolDeclarations element. -->
653
654 <xs:element minOccurs="0" maxOccurs="1" name="PpiDeclarations">
655 <xs:annotation>
4afd3d04
LG
656 <xs:documentation xml:lang="en-us"> This section defines the mapping of Ppi C names to GUID
657 values as a Registry Format GUID. </xs:documentation>
658 <xs:documentation xml:lang="en-us"> Modules that use these Ppis must specify their dependency on
659 this package. </xs:documentation>
0d2711a6
LG
660 </xs:annotation>
661 <xs:complexType>
662 <xs:sequence>
663 <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
664 <xs:annotation>
4afd3d04 665 <xs:documentation xml:lang="en-us"> Individual PPI Declarations </xs:documentation>
0d2711a6
LG
666 </xs:annotation>
667 <xs:complexType>
668 <xs:sequence>
4afd3d04 669 <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
0d2711a6
LG
670 <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"
671 type="RegistryFormatGuid"/>
4afd3d04 672 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
0d2711a6 673 </xs:sequence>
4afd3d04 674 <xs:attribute name="UiName" type="xs:normalizedString" use="optional"/>
0d2711a6
LG
675 <xs:attributeGroup ref="SupportedArchMod"/>
676 </xs:complexType>
677 </xs:element>
678 </xs:sequence>
679 </xs:complexType>
680 </xs:element>
681 <!-- End of PackageSurfaceArea PpiDeclarations element. -->
682
683 <xs:element minOccurs="0" maxOccurs="1" name="PcdDeclarations">
684 <xs:annotation>
4afd3d04
LG
685 <xs:documentation xml:lang="en-us"> This section is used to declare platform configuration knobs
686 that are defined by this package. </xs:documentation>
687 <xs:documentation xml:lang="en-us"> Modules that use these PCD values must specify their
688 dependency on this package. </xs:documentation>
0d2711a6
LG
689 </xs:annotation>
690 <xs:complexType>
691 <xs:sequence>
692 <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">
693 <xs:complexType>
694 <xs:sequence>
4afd3d04
LG
695 <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCname"
696 type="xs:NCName">
0d2711a6 697 <xs:annotation>
4afd3d04
LG
698 <xs:documentation xml:lang="en-us"> Specifies the C name of the Token
699 Space GUID of which this PCD Entry is a member. This C name should
700 also be listed in the GUIDs section, (specified above,) where the C
701 name is assigned to a GUID value. </xs:documentation>
0d2711a6
LG
702 </xs:annotation>
703 </xs:element>
704 <xs:element minOccurs="1" maxOccurs="1" name="Token">
705 <xs:annotation>
4afd3d04
LG
706 <xs:documentation xml:lang="en-us"> Specifies the 32-bit token value for
707 this PCD Entry. The Token number must be unique to the Token Space
708 that declares the PCD. </xs:documentation>
709 <xs:documentation xml:lang="en-us"> The minLength of 3 is required to
710 handle the "0x" prefix to the hex number. </xs:documentation>
0d2711a6
LG
711 </xs:annotation>
712 <xs:simpleType>
713 <xs:restriction base="HexNumber">
4afd3d04
LG
714 <xs:minLength value="3"/>
715 <xs:maxLength value="10"/>
0d2711a6
LG
716 </xs:restriction>
717 </xs:simpleType>
718 </xs:element>
4afd3d04
LG
719 <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
720 <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDatumTypes">
0d2711a6 721 <xs:annotation>
4afd3d04
LG
722 <xs:documentation xml:lang="en-us"> A string that contains the data type
723 of this PCD Entry. PCD data types are restricted to the following
724 set:UINT8, UINT16, UINT32, UINT64, VOID*, BOOLEAN.
0d2711a6
LG
725 </xs:documentation>
726 </xs:annotation>
727 </xs:element>
4afd3d04 728 <xs:element minOccurs="1" maxOccurs="1" name="ValidUsage" type="PcdItemListType">
0d2711a6 729 <xs:annotation>
4afd3d04
LG
730 <xs:documentation xml:lang="en-us"> A string that contains one or more
731 PCD Item types separated by spaces. The PCD Item types are
732 restricted to FeaturePcd, FixedPcd, PatchPcd, Pcd and/or PcdEx.
0d2711a6
LG
733 </xs:documentation>
734 </xs:annotation>
735 </xs:element>
736 <xs:element minOccurs="1" maxOccurs="1" name="DefaultValue"
737 type="xs:normalizedString"/>
738 <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize">
739 <xs:annotation>
4afd3d04
LG
740 <xs:documentation xml:lang="en-us"> This is a recommended maximum data
741 size for VOID* data types, the actual value should be defined by the
742 Platform Integrator. It is not required for the other data types. </xs:documentation>
743 <xs:documentation xml:lang="en-us"> The minLength of 3 is required to
744 handle the "0x" prefix to the hex number. </xs:documentation>
0d2711a6
LG
745
746 </xs:annotation>
747 <xs:simpleType>
748 <xs:restriction base="HexNumber">
4afd3d04 749 <xs:minLength value="3"/>
0d2711a6
LG
750 </xs:restriction>
751 </xs:simpleType>
752 </xs:element>
4afd3d04
LG
753 <xs:element minOccurs="0" maxOccurs="unbounded" name="Prompt">
754 <xs:annotation>
755 <xs:documentation xml:lang="en-US"> This entry contains prompt
756 information, that may used by tools to assist platform integrators
757 with choosing the correct values </xs:documentation>
758 </xs:annotation>
759 <xs:complexType>
760 <xs:simpleContent>
761 <xs:extension base="xs:string">
762 <xs:attribute name="Lang" type="xs:language" default="en-us"
763 use="optional"/>
764 </xs:extension>
765 </xs:simpleContent>
766 </xs:complexType>
767 </xs:element>
768 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
0d2711a6 769
4afd3d04 770 <xs:element minOccurs="0" maxOccurs="unbounded" name="PcdError">
0d2711a6 771 <xs:annotation>
4afd3d04
LG
772 <xs:documentation xml:lang="en-us"> Valid Error messages that may be
773 implemented in a module for the PCD Entry. Only One Error Number per
774 PcdError, (multiple ErrorMessage entries are permitted) and multiple
775 PcdError elements are permitted. </xs:documentation>
0d2711a6
LG
776 </xs:annotation>
777 <xs:complexType>
778 <xs:sequence>
4afd3d04
LG
779 <xs:choice minOccurs="1" maxOccurs="1">
780 <xs:annotation>
781 <xs:documentation xml:lang="en-us"> One of the following
782 types of comparisons, which must be able to evaluate to
783 either true or false. </xs:documentation>
784 </xs:annotation>
785 <xs:element minOccurs="0" maxOccurs="1" name="ValidValueList">
786 <xs:annotation>
787 <xs:documentation xml:lang="en-us"> The PCD Value must be
788 space separated list of values. Values are restricted to the
789 data type of this PCD. </xs:documentation>
790 </xs:annotation>
791 <xs:complexType>
792 <xs:simpleContent>
793 <xs:extension base="xs:normalizedString">
794 <xs:attribute name="Lang" type="xs:language" use="optional"
795 />
796 </xs:extension>
797 </xs:simpleContent>
798 </xs:complexType>
799 </xs:element>
800 <xs:element minOccurs="0" maxOccurs="1" name="ValidValueRange"
801 type="xs:normalizedString">
802 <xs:annotation>
803 <xs:documentation xml:lang="en-us"> The PCD must be within a
804 specifed range of numeric values. Restricted to C style
805 Relational, Equality and Logicial Operators and parenthesis
806 are valid. Only the CName for this PCD is permitted in the
807 ValidValueRange expression. All other values must be
808 numeric.</xs:documentation>
809 <xs:documentation xml:lang="en-us"> LValue (op RValue)+
810 </xs:documentation>
811 </xs:annotation>
812 </xs:element>
813 <xs:element minOccurs="0" maxOccurs="1" name="Expression"
814 type="xs:normalizedString">
815 <xs:annotation>
816 <xs:documentation xml:lang="en-us"> A in-fix logical
817 expression using C style logical operators.
818 </xs:documentation>
819 </xs:annotation>
820 </xs:element>
821 </xs:choice>
822 <xs:element minOccurs="1" maxOccurs="1" name="ErrorNumber">
823 <xs:annotation>
824 <xs:documentation xml:lang="en-us"> A hexadecimal value for
825 the error message as defined by specifications. </xs:documentation>
826 <xs:documentation xml:lang="en-us"> The minLength of 3 is
827 required to handle the "0x" prefix to the hex number. </xs:documentation>
828
829 </xs:annotation>
830 <xs:simpleType>
831 <xs:restriction base="HexNumber">
832 <xs:minLength value="3"/>
833 </xs:restriction>
834 </xs:simpleType>
835 </xs:element>
836 <xs:element minOccurs="1" maxOccurs="unbounded" name="ErrorMessage">
837 <xs:annotation>
838 <xs:documentation xml:lang="en-us"> This string should be
839 defined by specifications. There are pre-defined error
840 number ranges in the UEFI/PI specificaiton.
841 </xs:documentation>
842 </xs:annotation>
843 <xs:complexType>
844 <xs:simpleContent>
845 <xs:extension base="xs:string">
846 <xs:attribute name="Lang" type="xs:language" default="en-us"
847 use="optional"/>
848 </xs:extension>
849 </xs:simpleContent>
850 </xs:complexType>
851 </xs:element>
0d2711a6
LG
852 </xs:sequence>
853 </xs:complexType>
854 </xs:element>
855 </xs:sequence>
856 <xs:attributeGroup ref="SupportedArchMod"/>
857 </xs:complexType>
858 </xs:element>
859 </xs:sequence>
860 </xs:complexType>
861 </xs:element>
862 <!-- End of PackageSurfaceArea PcdDeclarations element. -->
863
864 <xs:element minOccurs="0" maxOccurs="1" name="PcdRelationshipChecks">
865 <xs:annotation>
4afd3d04
LG
866 <xs:documentation xml:lang="en-us"> This section is used to describe any PCD interdependencies
867 or relationships. </xs:documentation>
0d2711a6
LG
868 </xs:annotation>
869 <xs:complexType>
870 <xs:sequence>
4afd3d04 871 <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdCheck" type="xs:normalizedString">
0d2711a6
LG
872 <xs:annotation>
873 <xs:documentation xml:lang="en-us"> This entry must used
4afd3d04
LG
874 TokenSpaceGuidCName.PcdCname for every named PCD. Restricted to Relational,
875 Equality and Logical Operators (NOT, AND, OR, GT, GE, EQ, LE, LT and XOR) and
876 parenthesis are valid. Only the TokenSpaceGuidCName.PcdCname us permitted to
877 name PCDs in the expression. All other values must be numeric. </xs:documentation>
878 <xs:documentation xml:lang="en-us"> LValue (op RValue)+ </xs:documentation>
0d2711a6
LG
879 </xs:annotation>
880 </xs:element>
881 </xs:sequence>
882 </xs:complexType>
883 </xs:element>
884
885 <xs:element minOccurs="0" maxOccurs="unbounded" name="MiscellaneousFiles">
886 <xs:annotation>
4afd3d04
LG
887 <xs:documentation xml:lang="en-us"> This section contains files that are not part of the code
888 distributed with this package. </xs:documentation>
0d2711a6
LG
889 </xs:annotation>
890 <xs:complexType>
891 <xs:sequence>
4afd3d04 892 <xs:element minOccurs="0" maxOccurs="1" name="Copyright" type="xs:string">
0d2711a6 893 <xs:annotation>
4afd3d04
LG
894 <xs:documentation xml:lang="en-us"> Only required if different from the Package
895 Copyright. </xs:documentation>
0d2711a6
LG
896 </xs:annotation>
897 </xs:element>
898 <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
899 <xs:annotation>
4afd3d04
LG
900 <xs:documentation xml:lang="en-us"> Only required if different from the Package
901 License. </xs:documentation>
0d2711a6
LG
902 </xs:annotation>
903 </xs:element>
904 <xs:element minOccurs="0" maxOccurs="1" name="Abstract" type="xs:string">
905 <xs:annotation>
4afd3d04
LG
906 <xs:documentation xml:lang="en-us"> A one line description of this section's
907 content. </xs:documentation>
0d2711a6
LG
908 </xs:annotation>
909 </xs:element>
4afd3d04 910 <xs:element minOccurs="0" maxOccurs="unbounded" name="Description" type="xs:string">
0d2711a6 911 <xs:annotation>
4afd3d04
LG
912 <xs:documentation xml:lang="en-us"> A complete description of the files in this
913 section. </xs:documentation>
0d2711a6
LG
914 </xs:annotation>
915 </xs:element>
916 <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
917 <xs:annotation>
4afd3d04
LG
918 <xs:documentation xml:lang="en-us"> This is the PackagePath relative path and
919 filename location within the ZIP file. </xs:documentation>
0d2711a6
LG
920 </xs:annotation>
921 <xs:complexType>
922 <xs:simpleContent>
923 <xs:extension base="xs:anyURI">
4afd3d04
LG
924 <xs:attribute name="Executable" type="xs:boolean" default="false"
925 use="optional">
0d2711a6 926 <xs:annotation>
4afd3d04
LG
927 <xs:documentation xml:lang="en-us"> If true, used by installation
928 tools to ensure that a file that must be executable has the
929 correct properties to permit execution. </xs:documentation>
0d2711a6
LG
930 </xs:annotation>
931 </xs:attribute>
932 </xs:extension>
933 </xs:simpleContent>
934 </xs:complexType>
935 </xs:element>
936
937 </xs:sequence>
938 </xs:complexType>
939 </xs:element>
940 <!-- End of PackageSurfaceArea Misc element. -->
941
942 <xs:element minOccurs="0" maxOccurs="unbounded" name="UserExtensions">
943 <xs:annotation>
4afd3d04
LG
944 <xs:documentation xml:lang="en-us"> This section is used for any processing instructions that
945 may be custom to the content provided by this package that are common to this package.
946 </xs:documentation>
0d2711a6
LG
947 </xs:annotation>
948 <xs:complexType mixed="true">
949 <xs:sequence>
950 <xs:any processContents="lax" minOccurs="0" maxOccurs="1"/>
951 </xs:sequence>
952 <xs:attribute name="UserId" type="xs:NCName" use="required">
953 <xs:annotation>
4afd3d04
LG
954 <xs:documentation xml:lang="en-us"> This is a single word identifier for grouping
955 similar content that does not fit into previously defined sections or other sections
956 of the Distribution. </xs:documentation>
0d2711a6
LG
957 </xs:annotation>
958 </xs:attribute>
959 <xs:attribute name="Identifier" type="xs:string" use="required">
960 <xs:annotation>
4afd3d04
LG
961 <xs:documentation xml:lang="en-us"> This can be used to differentiate multiple sections
962 with a grouping. </xs:documentation>
963 <xs:documentation xml:lang="en-us"> For example, a PRE_PROCESS Identifier might indicate
964 specific steps and tools required before processing module content, while a
965 different UserExtensions section with a POST_PROCESS Identifier might describe steps
966 that need to be executed after operations on the modules in this package.
967 </xs:documentation>
0d2711a6
LG
968 </xs:annotation>
969 </xs:attribute>
970 <xs:anyAttribute processContents="lax"/>
971 </xs:complexType>
972 </xs:element>
973 <!-- End of PackageSurfaceArea UserExtensions element. -->
974
975 </xs:sequence>
976 </xs:complexType>
977 </xs:element>
978 <!-- End of the PackageSurfaceArea element. -->
979
980 <xs:element name="ModuleSurfaceArea">
981 <xs:annotation>
4afd3d04
LG
982 <xs:documentation xml:lang="en-us"> Each module is uniquely identified by it's GUID and Version number.
983 Backward compatible releases of a module need only change the version number, while non-backward
984 compatible changes require the GUID to change (resetting the version number to 1.0 is optional.)
985 </xs:documentation>
0d2711a6
LG
986 </xs:annotation>
987 <xs:complexType>
988 <xs:sequence>
989
990 <xs:element minOccurs="1" maxOccurs="1" name="Header">
991 <xs:complexType>
992 <xs:sequence>
993 <xs:element minOccurs="1" maxOccurs="1" name="Name">
994 <xs:annotation>
4afd3d04
LG
995 <xs:documentation xml:lang="en-us"> This is the User Interface Name for this Module.
996 </xs:documentation>
0d2711a6
LG
997 </xs:annotation>
998 <xs:complexType>
999 <xs:simpleContent>
1000 <xs:extension base="xs:normalizedString">
4afd3d04 1001 <xs:attribute name="BaseName" type="xs:NMTOKEN" use="required">
0d2711a6 1002 <xs:annotation>
4afd3d04
LG
1003 <xs:documentation xml:lang="en-us"> This is a single word BaseName
1004 that will be used to create a module meta-data file. </xs:documentation>
1005 <xs:documentation xml:lang="en-us"> This name should also be used to
1006 create output file names and directories. </xs:documentation>
0d2711a6
LG
1007 </xs:annotation>
1008 </xs:attribute>
1009 </xs:extension>
1010 </xs:simpleContent>
1011 </xs:complexType>
1012 </xs:element>
1013 <xs:element minOccurs="1" maxOccurs="1" name="GUID">
1014 <xs:annotation>
4afd3d04
LG
1015 <xs:documentation xml:lang="en-us"> This GUID and the Version attribute uniquely
1016 identify a given Module. </xs:documentation>
0d2711a6
LG
1017 </xs:annotation>
1018 <xs:complexType>
1019 <xs:simpleContent>
1020 <xs:extension base="RegistryFormatGuid">
4afd3d04 1021 <xs:attribute name="Version" type="xs:decimal" use="required">
0d2711a6 1022 <xs:annotation>
4afd3d04
LG
1023 <xs:documentation xml:lang="en-us"> This value, along with the GUID,
1024 is used to uniquely identify this object. </xs:documentation>
1025 <xs:documentation xml:lang="en-us"> Backward compatible changes must
1026 make sure this number is incremented from the most recent
1027 version. Non-backward compatible changes require a new GUID, and
1028 the version can be reset. </xs:documentation>
0d2711a6
LG
1029 </xs:annotation>
1030 </xs:attribute>
1031 </xs:extension>
1032 </xs:simpleContent>
1033 </xs:complexType>
1034 </xs:element>
4afd3d04 1035 <xs:element minOccurs="0" maxOccurs="unbounded" name="Copyright">
0d2711a6 1036 <xs:annotation>
4afd3d04
LG
1037 <xs:documentation xml:lang="en-us"> This is only required if the Copyright is
1038 different from either the Package or Distribution copyright. Multiple copyright
1039 lines are permitted within this section. </xs:documentation>
0d2711a6 1040 </xs:annotation>
4afd3d04
LG
1041 <xs:complexType>
1042 <xs:simpleContent>
1043 <xs:extension base="xs:string">
1044 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
1045 />
1046 </xs:extension>
1047 </xs:simpleContent>
1048 </xs:complexType>
0d2711a6 1049 </xs:element>
4afd3d04 1050 <xs:element minOccurs="0" maxOccurs="unbounded" name="License">
0d2711a6 1051 <xs:annotation>
4afd3d04
LG
1052 <xs:documentation xml:lang="en-us"> This is only required if the license is
1053 different from either the Package or Distribution license. Multiple licenses are
1054 permitted within this section. </xs:documentation>
0d2711a6 1055 </xs:annotation>
4afd3d04
LG
1056 <xs:complexType>
1057 <xs:simpleContent>
1058 <xs:extension base="xs:string">
1059 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
1060 />
1061 </xs:extension>
1062 </xs:simpleContent>
1063 </xs:complexType>
0d2711a6 1064 </xs:element>
4afd3d04 1065 <xs:element minOccurs="0" maxOccurs="unbounded" name="Abstract">
0d2711a6 1066 <xs:annotation>
4afd3d04
LG
1067 <xs:documentation xml:lang="en-us"> A brief text description of the module.
1068 </xs:documentation>
0d2711a6 1069 </xs:annotation>
4afd3d04
LG
1070 <xs:complexType>
1071 <xs:simpleContent>
1072 <xs:extension base="xs:normalizedString">
1073 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
1074 />
1075 </xs:extension>
1076 </xs:simpleContent>
1077 </xs:complexType>
0d2711a6 1078 </xs:element>
4afd3d04 1079 <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
0d2711a6 1080 <xs:annotation>
4afd3d04
LG
1081 <xs:documentation xml:lang="en-us"> A complete description of the module contents
1082 and/or features including a description of the updates since the previous module
1083 release. </xs:documentation>
0d2711a6 1084 </xs:annotation>
4afd3d04
LG
1085 <xs:complexType>
1086 <xs:simpleContent>
1087 <xs:extension base="xs:string">
1088 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
1089 />
1090 </xs:extension>
1091 </xs:simpleContent>
1092 </xs:complexType>
0d2711a6
LG
1093 </xs:element>
1094 </xs:sequence>
1095 </xs:complexType>
1096 </xs:element>
1097 <!-- End of Module Surface Area Header Section -->
1098
1099 <xs:element minOccurs="0" maxOccurs="1" name="ModuleProperties">
1100 <xs:annotation>
4afd3d04
LG
1101 <xs:documentation xml:lang="en-us"> List general information about a module, including the
1102 Supported Architectures, this module's type, specifications the module is coded against, and
1103 other informational content. </xs:documentation>
0d2711a6
LG
1104 </xs:annotation>
1105 <xs:complexType>
1106 <xs:sequence>
4afd3d04 1107 <xs:element minOccurs="1" maxOccurs="1" name="ModuleType" type="ModuleTypes">
0d2711a6 1108 <xs:annotation>
4afd3d04
LG
1109 <xs:documentation xml:lang="en-us"> One of the Enumerated module types that limit
1110 the use of a module. </xs:documentation>
0d2711a6
LG
1111 </xs:annotation>
1112 </xs:element>
1113 <xs:element minOccurs="1" maxOccurs="1" name="Path" type="xs:anyURI">
1114 <xs:annotation>
4afd3d04
LG
1115 <xs:documentation xml:lang="en-us"> For stand-alone modules that are NOT part of any
1116 package, this is the path to the root of the module as listed in the ZIP file.
1117 For modules included in a package, this is the location, relative to the root of
1118 the package (PackagePath) this module belongs to. </xs:documentation>
0d2711a6
LG
1119 </xs:annotation>
1120 </xs:element>
1121 <xs:element minOccurs="0" maxOccurs="1" name="PcdIsDriver">
1122 <xs:annotation>
4afd3d04
LG
1123 <xs:documentation xml:lang="en-us"> This element is only required for the PEIM that
1124 produces the PCD PPI or the DXE Driver that produces the PCD Protocol.
1125 </xs:documentation>
0d2711a6
LG
1126 </xs:annotation>
1127 <xs:simpleType>
1128 <xs:restriction base="xs:NCName">
1129 <xs:enumeration value="PEI_PCD_DRIVER"/>
1130 <xs:enumeration value="DXE_PCD_DRIVER"/>
1131 </xs:restriction>
1132 </xs:simpleType>
1133 </xs:element>
1134
4afd3d04 1135 <xs:element minOccurs="0" maxOccurs="1" name="UefiSpecificationVersion" type="xs:decimal"/>
0d2711a6 1136
4afd3d04 1137 <xs:element minOccurs="0" maxOccurs="1" name="PiSpecificationVersion" type="xs:decimal"/>
0d2711a6
LG
1138
1139 <xs:element minOccurs="0" maxOccurs="unbounded" name="Specification">
1140 <xs:annotation>
4afd3d04
LG
1141 <xs:documentation xml:lang="en-us"> This is a list of other specifications that this
1142 module is written against. These entries can be used in #define statements
1143 (depending on the build system implementation, they may be autogenerated.)
0d2711a6
LG
1144 </xs:documentation>
1145 </xs:annotation>
1146 <xs:complexType>
1147 <xs:simpleContent>
1148 <xs:extension base="xs:NCName">
4afd3d04 1149 <xs:attribute name="Version" type="xs:decimal" use="required"/>
0d2711a6
LG
1150 </xs:extension>
1151 </xs:simpleContent>
1152 </xs:complexType>
1153 </xs:element>
1154
1155 <xs:element minOccurs="0" maxOccurs="unbounded" name="BootMode">
1156 <xs:annotation>
4afd3d04
LG
1157 <xs:documentation xml:lang="en-us"> Different firmware execution paths may be taken
1158 based on a given state of the hardware, firmware, or through feature settings. A
1159 BootMode may be declared (PRODUCES) or discovered (CONSUMES) based on these
1160 states and feature settings. If the usage is UNDEFINE, it implies that a Boot
1161 Mode is used, but the package creator does not know how it is used. The
1162 supported boot modes map to the PI specification Boot Modes. The boot modes
1163 listed with Recovery are to indicate that the BootMode is valid during a
1164 recovery boot. </xs:documentation>
0d2711a6
LG
1165 </xs:annotation>
1166 <xs:complexType>
1167 <xs:sequence minOccurs="0">
4afd3d04 1168 <xs:element minOccurs="1" maxOccurs="1" name="SupportedBootModes">
0d2711a6
LG
1169 <xs:simpleType>
1170 <xs:list>
4afd3d04
LG
1171 <xs:simpleType>
1172 <xs:restriction base="xs:NCName">
1173 <xs:enumeration value="FULL"/>
1174 <xs:enumeration value="MINIMAL"/>
1175 <xs:enumeration value="NO_CHANGE"/>
1176 <xs:enumeration value="DIAGNOSTICS"/>
1177 <xs:enumeration value="DEFAULT"/>
1178 <xs:enumeration value="S2_RESUME"/>
1179 <xs:enumeration value="S3_RESUME"/>
1180 <xs:enumeration value="S4_RESUME"/>
1181 <xs:enumeration value="S5_RESUME"/>
1182 <xs:enumeration value="FLASH_UPDATE"/>
1183 <xs:enumeration value="RECOVERY_FULL"/>
1184 <xs:enumeration value="RECOVERY_MINIMAL"/>
1185 <xs:enumeration value="RECOVERY_NO_CHANGE"/>
1186 <xs:enumeration value="RECOVERY_DIAGNOSTICS"/>
1187 <xs:enumeration value="RECOVERY_DEFAULT"/>
1188 <xs:enumeration value="RECOVERY_S2_RESUME"/>
1189 <xs:enumeration value="RECOVERY_S3_RESUME"/>
1190 <xs:enumeration value="RECOVERY_S4_RESUME"/>
1191 <xs:enumeration value="RECOVERY_S5_RESUME"/>
1192 <xs:enumeration value="RECOVERY_FLASH_UPDATE"/>
1193 <xs:enumeration value="UNDEFINED"/>
1194 </xs:restriction>
1195 </xs:simpleType>
0d2711a6
LG
1196 </xs:list>
1197 </xs:simpleType>
1198 </xs:element>
1199
4afd3d04 1200 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
0d2711a6
LG
1201 </xs:sequence>
1202 <xs:attribute name="Usage" use="required">
1203 <xs:simpleType>
1204 <xs:restriction base="xs:NCName">
1205 <xs:enumeration value="CONSUMES">
4afd3d04
LG
1206 <xs:annotation>
1207 <xs:documentation xml:lang="en-us"> The module always supports
1208 the given boot modes. </xs:documentation>
1209 </xs:annotation>
0d2711a6
LG
1210 </xs:enumeration>
1211 <xs:enumeration value="SOMETIMES_CONSUMES">
4afd3d04
LG
1212 <xs:annotation>
1213 <xs:documentation xml:lang="en-us"> The module may support a
1214 given mode on some execution paths. </xs:documentation>
1215 </xs:annotation>
0d2711a6
LG
1216 </xs:enumeration>
1217 <xs:enumeration value="PRODUCES">
4afd3d04
LG
1218 <xs:annotation>
1219 <xs:documentation xml:lang="en-us"> The module will change the
1220 boot mode. </xs:documentation>
1221 </xs:annotation>
0d2711a6
LG
1222 </xs:enumeration>
1223 <xs:enumeration value="SOMETIME_PRODUCES">
4afd3d04
LG
1224 <xs:annotation>
1225 <xs:documentation xml:lang="en-us"> The module will change the
1226 boot mode on some exection paths. </xs:documentation>
1227 </xs:annotation>
0d2711a6
LG
1228 </xs:enumeration>
1229 <xs:enumeration value="UNDEFINED">
4afd3d04
LG
1230 <xs:annotation>
1231 <xs:documentation xml:lang="en-us"> The package creator does not
1232 know how the boot mode is used. </xs:documentation>
1233 </xs:annotation>
0d2711a6
LG
1234 </xs:enumeration>
1235 </xs:restriction>
1236 </xs:simpleType>
1237 </xs:attribute>
4afd3d04
LG
1238 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
1239 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
0d2711a6
LG
1240 </xs:complexType>
1241 </xs:element>
1242
4afd3d04 1243 <xs:element minOccurs="0" maxOccurs="unbounded" name="Event" nillable="true">
0d2711a6 1244 <xs:annotation>
4afd3d04
LG
1245 <xs:documentation xml:lang="en-us"> The functions that make up the Event, Timer, and
1246 Task Priority Services are used during preboot to create, close, signal, and
1247 wait for events; to set timers; and to raise and restore task priority levels as
1248 defined in the UEFI specification. GUIDed events should be listed in the Guids
1249 section. </xs:documentation>
0d2711a6
LG
1250 </xs:annotation>
1251 <xs:complexType>
1252 <xs:sequence>
4afd3d04 1253 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
0d2711a6
LG
1254 </xs:sequence>
1255 <xs:attribute name="Usage" use="required">
1256 <xs:simpleType>
1257 <xs:restriction base="xs:NCName">
1258 <xs:enumeration value="CONSUMES">
4afd3d04
LG
1259 <xs:annotation>
1260 <xs:documentation xml:lang="en-us"> The module will register a
1261 notification function and calls the function when it is
1262 signaled. </xs:documentation>
1263 </xs:annotation>
0d2711a6
LG
1264 </xs:enumeration>
1265 <xs:enumeration value="SOMETIMES_CONSUMES">
4afd3d04
LG
1266 <xs:annotation>
1267 <xs:documentation xml:lang="en-us"> The module will register a
1268 notification function and calls the function when it is
1269 signaled on some execution paths. </xs:documentation>
1270 </xs:annotation>
0d2711a6
LG
1271 </xs:enumeration>
1272 <xs:enumeration value="PRODUCES">
4afd3d04
LG
1273 <xs:annotation>
1274 <xs:documentation xml:lang="en-us"> The module will signal all
1275 events in an event group. </xs:documentation>
1276 </xs:annotation>
0d2711a6
LG
1277 </xs:enumeration>
1278 <xs:enumeration value="SOMETIMES_PRODUCES">
4afd3d04
LG
1279 <xs:annotation>
1280 <xs:documentation xml:lang="en-us"> The module will signal all
1281 events in an event group under some execution paths.
1282 </xs:documentation>
1283 </xs:annotation>
0d2711a6
LG
1284 </xs:enumeration>
1285 <xs:enumeration value="UNDEFINED">
4afd3d04
LG
1286 <xs:annotation>
1287 <xs:documentation xml:lang="en-us"> The package creator does not
1288 know how an event is used. </xs:documentation>
1289 </xs:annotation>
0d2711a6
LG
1290 </xs:enumeration>
1291 </xs:restriction>
1292 </xs:simpleType>
1293 </xs:attribute>
1294 <xs:attribute name="EventType" use="required">
1295 <xs:simpleType>
1296 <xs:restriction base="xs:NCName">
1297 <xs:enumeration value="EVENT_TYPE_PERIODIC_TIMER"/>
1298 <xs:enumeration value="EVENT_TYPE_RELATIVE_TIMER"/>
1299 <xs:enumeration value="UNDEFINED"/>
1300 </xs:restriction>
1301 </xs:simpleType>
1302
1303
1304 </xs:attribute>
4afd3d04
LG
1305 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
1306 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
0d2711a6
LG
1307 </xs:complexType>
1308 </xs:element>
1309
4afd3d04 1310 <xs:element minOccurs="0" maxOccurs="unbounded" name="HOB" nillable="false">
0d2711a6 1311 <xs:annotation>
4afd3d04
LG
1312 <xs:documentation xml:lang="en-us"> This is a list of non-GUIDed Hand Off Blocks
1313 (HOBs) produced or consumed by this module. </xs:documentation>
0d2711a6
LG
1314 </xs:annotation>
1315 <xs:complexType>
1316 <xs:sequence>
4afd3d04 1317 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
0d2711a6
LG
1318 </xs:sequence>
1319 <xs:attribute name="HobType" use="required">
1320 <xs:simpleType>
1321 <xs:restriction base="xs:NCName">
1322 <xs:enumeration value="PHIT"/>
1323 <xs:enumeration value="MEMORY_ALLOCATION"/>
1324 <xs:enumeration value="RESOURCE_DESCRIPTOR"/>
1325 <xs:enumeration value="FIRMWARE_VOLUME"/>
1326 <xs:enumeration value="LOAD_PEIM"/>
1327 <xs:enumeration value="UNDEFINED"/>
1328 </xs:restriction>
1329 </xs:simpleType>
1330 </xs:attribute>
1331 <xs:attribute name="Usage" use="required">
1332 <xs:simpleType>
1333 <xs:restriction base="xs:NCName">
1334 <xs:enumeration value="CONSUMES">
4afd3d04
LG
1335 <xs:annotation>
1336 <xs:documentation xml:lang="en-us"> A HOB must be present in the
1337 system. </xs:documentation>
1338 </xs:annotation>
0d2711a6
LG
1339 </xs:enumeration>
1340 <xs:enumeration value="SOMETIMES_CONSUMES">
4afd3d04
LG
1341 <xs:annotation>
1342 <xs:documentation xml:lang="en-us"> If present, the HOB will be
1343 used. </xs:documentation>
1344 </xs:annotation>
0d2711a6
LG
1345 </xs:enumeration>
1346 <xs:enumeration value="PRODUCES">
4afd3d04
LG
1347 <xs:annotation>
1348 <xs:documentation xml:lang="en-us"> The HOB is always produced
1349 by the module. </xs:documentation>
1350 </xs:annotation>
0d2711a6
LG
1351 </xs:enumeration>
1352 <xs:enumeration value="SOMETIMES_PRODUCES">
4afd3d04
LG
1353 <xs:annotation>
1354 <xs:documentation xml:lang="en-us"> The HOB may be produced by
1355 the module under some execution paths. </xs:documentation>
1356 </xs:annotation>
0d2711a6
LG
1357 </xs:enumeration>
1358 <xs:enumeration value="UNDEFINED">
4afd3d04
LG
1359 <xs:annotation>
1360 <xs:documentation xml:lang="en-us"> The package creator knows
1361 that a HOB is used, but does not know how it is used.
1362 </xs:documentation>
1363 </xs:annotation>
0d2711a6
LG
1364 </xs:enumeration>
1365 </xs:restriction>
1366 </xs:simpleType>
1367 </xs:attribute>
4afd3d04
LG
1368 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
1369 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
0d2711a6
LG
1370 </xs:complexType>
1371 </xs:element>
1372
1373 </xs:sequence>
1374 <xs:attributeGroup ref="SupportedArchMod"/>
1375 </xs:complexType>
1376 </xs:element>
1377 <!-- End of ModuleProperties Section -->
1378
1379 <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">
1380 <xs:annotation>
4afd3d04
LG
1381 <xs:documentation xml:lang="en-us"> This section may be included for Modules that are copied
1382 from a different module. </xs:documentation>
0d2711a6
LG
1383 </xs:annotation>
1384 <xs:complexType>
1385 <xs:sequence>
1386 <xs:element minOccurs="1" maxOccurs="1" name="GUID">
1387 <xs:annotation>
4afd3d04
LG
1388 <xs:documentation xml:lang="en-us"> This GUID and the Version attribute uniquely
1389 identify the Module that this Module was copied from. </xs:documentation>
0d2711a6
LG
1390 </xs:annotation>
1391 <xs:complexType>
1392 <xs:simpleContent>
1393 <xs:extension base="RegistryFormatGuid">
4afd3d04 1394 <xs:attribute name="Version" type="xs:decimal" use="required">
0d2711a6 1395 <xs:annotation>
4afd3d04
LG
1396 <xs:documentation xml:lang="en-us"> This value, along with the GUID,
1397 is used to uniquely identify this object. </xs:documentation>
0d2711a6
LG
1398 </xs:annotation>
1399 </xs:attribute>
1400 </xs:extension>
1401 </xs:simpleContent>
1402 </xs:complexType>
1403 </xs:element>
1404 </xs:sequence>
1405 </xs:complexType>
1406 </xs:element>
1407 <!-- End of ClonedFrom Section. -->
1408
1409 <xs:element minOccurs="0" maxOccurs="1" name="LibraryClassDefinitions">
1410 <xs:annotation>
4afd3d04
LG
1411 <xs:documentation xml:lang="en-us"> A list of the different Library Classes consumed by a
1412 driver, core and/or application module, or produced by a Library module. </xs:documentation>
0d2711a6
LG
1413 </xs:annotation>
1414 <xs:complexType>
1415 <xs:sequence>
1416 <xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass">
1417 <xs:complexType>
1418 <xs:sequence>
4afd3d04 1419 <xs:element minOccurs="1" maxOccurs="1" name="Keyword" type="xs:NCName">
0d2711a6 1420 <xs:annotation>
4afd3d04
LG
1421 <xs:documentation xml:lang="en-us "> Used by tools to identify different
1422 instances of libraries that provide the library class. This keyword
1423 identifies the library class this module needs to be linked against.
1424 </xs:documentation>
0d2711a6
LG
1425 </xs:annotation>
1426 </xs:element>
4afd3d04 1427 <xs:element minOccurs="0" maxOccurs="1" name="RecommendedInstance">
0d2711a6
LG
1428 <xs:complexType>
1429 <xs:all>
4afd3d04
LG
1430 <xs:element minOccurs="1" maxOccurs="1" name="GUID">
1431 <xs:annotation>
1432 <xs:documentation xml:lang="en-us"> This GUID and the
1433 Version attribute uniquely identify the recommended Library
1434 Instance for this module . </xs:documentation>
1435 </xs:annotation>
1436 <xs:complexType>
1437 <xs:simpleContent>
1438 <xs:extension base="RegistryFormatGuid">
1439 <xs:attribute name="Version" type="xs:decimal"
1440 use="optional">
1441 <xs:annotation>
1442 <xs:documentation xml:lang="en-us"> This value, along with
1443 the GUID, is used to uniquely identify this object.
1444 </xs:documentation>
1445 </xs:annotation>
1446 </xs:attribute>
1447 </xs:extension>
1448 </xs:simpleContent>
1449 </xs:complexType>
1450 </xs:element>
0d2711a6
LG
1451 </xs:all>
1452 </xs:complexType>
1453 </xs:element>
4afd3d04 1454 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
0d2711a6
LG
1455 </xs:sequence>
1456 <xs:attribute name="Usage" use="required">
1457 <xs:simpleType>
1458 <xs:annotation>
4afd3d04
LG
1459 <xs:documentation xml:lang="en-us"> Library instances can provide code
1460 for a library class, or may require other library instances
1461 themselves. Since different execution paths in a library (or module)
1462 may need different library classes based on some setting, library
1463 classes may not alway be required. </xs:documentation>
0d2711a6
LG
1464 </xs:annotation>
1465 <xs:restriction base="xs:NCName">
1466 <xs:enumeration value="PRODUCES"/>
1467 <xs:enumeration value="CONSUMES"/>
1468 <xs:enumeration value="SOMETIMES_CONSUMES"/>
1469 <xs:enumeration value="UNDEFINED"/>
1470 </xs:restriction>
1471 </xs:simpleType>
1472 </xs:attribute>
1473
1474 <xs:attributeGroup ref="SupportedArchMod"/>
4afd3d04 1475 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional">
0d2711a6 1476 <xs:annotation>
4afd3d04
LG
1477 <xs:documentation xml:lang="en-us"> A FeatureFlag attribute must evaluate to
1478 either true or false - it may be a fixed value of true or false, a C
1479 name or an in-fix expression. </xs:documentation>
0d2711a6
LG
1480 </xs:annotation>
1481 </xs:attribute>
1482 </xs:complexType>
1483 </xs:element>
1484 </xs:sequence>
1485 </xs:complexType>
1486 </xs:element>
1487 <!-- End of LibraryClassDefinitions Section -->
1488
1489 <xs:element minOccurs="0" maxOccurs="1" name="SourceFiles">
1490 <xs:complexType>
1491 <xs:sequence>
1492 <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
1493 <xs:annotation>
1494 <xs:documentation xml:lang="en-us"> This is the module relative
4afd3d04
LG
1495 (ModuleProperties.Path) path and filename location within the ZIP file.
1496 </xs:documentation>
0d2711a6
LG
1497 </xs:annotation>
1498 <xs:complexType>
1499 <xs:simpleContent>
1500 <xs:extension base="xs:anyURI">
4afd3d04 1501 <xs:attribute name="Family" type="FamilyTypes" use="optional">
0d2711a6 1502 <xs:annotation>
4afd3d04
LG
1503 <xs:documentation xml:lang="en-us"> The Family attribute is used to
1504 restrict usage to a given family of compilers, such as GCC or
1505 MSFT. Since not all code processing tools use the same syntax,
1506 especially for assembly, this field can be used to identify
1507 different syntax. </xs:documentation>
0d2711a6
LG
1508 </xs:annotation>
1509 </xs:attribute>
4afd3d04
LG
1510 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
1511 <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
1512 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
0d2711a6
LG
1513 </xs:extension>
1514 </xs:simpleContent>
1515 </xs:complexType>
1516 </xs:element>
1517 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
1518 </xs:sequence>
1519 </xs:complexType>
1520 </xs:element>
1521 <!-- End of SourceFiles Section -->
1522
1523 <xs:element minOccurs="0" maxOccurs="1" name="BinaryFiles">
1524 <xs:complexType>
1525 <xs:sequence>
1526 <xs:element minOccurs="1" maxOccurs="unbounded" name="BinaryFile">
1527 <xs:complexType>
1528 <xs:sequence>
4afd3d04 1529 <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
0d2711a6 1530 <xs:annotation>
4afd3d04
LG
1531 <xs:documentation xml:lang="en-us"> This is the module relative
1532 (ModuleProperties.Path) path and filename location within the ZIP
1533 file. </xs:documentation>
0d2711a6
LG
1534 </xs:annotation>
1535 <xs:complexType>
1536 <xs:simpleContent>
4afd3d04
LG
1537 <xs:extension base="xs:anyURI">
1538 <xs:attribute name="FileType" use="optional">
1539 <xs:simpleType>
1540 <xs:restriction base="xs:NCName">
1541 <xs:annotation>
1542 <xs:documentation xml:lang="en-us"> Binary file distribution
1543 is limited to UEFI/PI FFS leaf section file types.
1544 </xs:documentation>
1545 </xs:annotation>
1546 <xs:enumeration value="GUID"/>
1547 <xs:enumeration value="FREEFORM"/>
1548 <xs:enumeration value="UEFI_IMAGE"/>
1549 <xs:enumeration value="PE32">
1550 <xs:annotation>
1551 <xs:documentation xml:lang="en-us"> A UEFI/PI FFS Leaf
1552 section file type, not a raw PE32 file. </xs:documentation>
1553 </xs:annotation>
1554 </xs:enumeration>
1555 <xs:enumeration value="PIC"/>
1556 <xs:enumeration value="PEI_DEPEX"/>
1557 <xs:enumeration value="DXE_DEPEX"/>
1558 <xs:enumeration value="SMM_DEPEX"/>
1559 <xs:enumeration value="COMPAT16"/>
1560 <xs:enumeration value="DISPOSABLE"/>
1561 <xs:enumeration value="TE"/>
1562 <xs:enumeration value="VER"/>
1563 <xs:enumeration value="UI"/>
1564 <xs:enumeration value="BIN"/>
1565 <xs:enumeration value="FV"/>
1566 </xs:restriction>
1567 </xs:simpleType>
1568 </xs:attribute>
1569 <xs:attribute name="GUID" use="optional"
1570 type="RegistryFormatGuid"/>
1571 <xs:attribute name="SupArchList" type="ArchListType"
1572 use="optional"/>
1573 <xs:attribute name="SupModList" type="ModuleListType"
1574 use="optional"/>
1575 <xs:attribute name="FeatureFlag" type="xs:normalizedString"
1576 use="optional"/>
1577 </xs:extension>
0d2711a6
LG
1578 </xs:simpleContent>
1579 </xs:complexType>
1580 </xs:element>
4afd3d04 1581 <xs:element minOccurs="0" maxOccurs="unbounded" name="AsBuilt">
0d2711a6 1582 <xs:annotation>
4afd3d04
LG
1583 <xs:documentation xml:lang="en-us"> This section contains information
1584 about how the module was coded, such as Compiler Tools, Flags, PCDs
1585 (only PatchPcd and/or PcdEx) and Library Class Instances used to
1586 build the binary. </xs:documentation>
0d2711a6
LG
1587 </xs:annotation>
1588 <xs:complexType>
1589 <xs:sequence>
1590
4afd3d04
LG
1591 <xs:element minOccurs="0" maxOccurs="unbounded" name="PatchPcdValue">
1592 <xs:annotation>
1593 <xs:documentation xml:lang="en-us"> The element is the
1594 Patchable PCD Value that was used during the build.
1595 </xs:documentation>
1596 </xs:annotation>
1597 <xs:complexType>
1598 <xs:sequence>
1599 <xs:element minOccurs="1" maxOccurs="1"
1600 name="TokenSpaceGuidValue" type="RegistryFormatGuid"/>
1601 <xs:element minOccurs="1" maxOccurs="1" name="PcdCName"
1602 type="xs:NCName"/>
1603 <xs:element minOccurs="1" maxOccurs="1" name="Token">
1604 <xs:annotation>
1605 <xs:documentation xml:lang="en-us"> The minLength of 3 is
1606 required to handle the "0x" prefix to the hex number.
1607 </xs:documentation>
1608 </xs:annotation>
1609 <xs:simpleType>
1610 <xs:restriction base="HexNumber">
1611 <xs:minLength value="3"/>
1612 <xs:maxLength value="10"/>
1613 </xs:restriction>
1614 </xs:simpleType>
1615 </xs:element>
2bc3256c 1616 <xs:element minOccurs="1" maxOccurs="1" name="DatumType"
4afd3d04
LG
1617 type="PcdDatumTypes"/>
1618 <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize">
1619 <xs:annotation>
1620 <xs:documentation xml:lang="en-us"> This field is required
1621 if the Pcd Datum Type is VOID* </xs:documentation>
1622 <xs:documentation xml:lang="en-us"> The minLength of 3 is
1623 required to handle the "0x" prefix to the hex number.
1624 </xs:documentation>
1625 </xs:annotation>
1626 <xs:simpleType>
1627 <xs:restriction base="HexNumber">
1628 <xs:minLength value="3"/>
1629 </xs:restriction>
1630 </xs:simpleType>
1631 </xs:element>
1632 <xs:element minOccurs="1" maxOccurs="1" name="Value"
1633 type="xs:normalizedString"/>
1634 <xs:element minOccurs="1" maxOccurs="1" name="Offset">
1635 <xs:annotation>
1636 <xs:documentation xml:lang="en-us"> The minLength of 3 is
1637 required to handle the "0x" prefix to the hex number.
1638 </xs:documentation>
1639 </xs:annotation>
1640 <xs:simpleType>
1641 <xs:restriction base="HexNumber">
1642 <xs:minLength value="3"/>
1643 </xs:restriction>
1644 </xs:simpleType>
1645 </xs:element>
1646 <xs:element ref="HelpText" minOccurs="0"
1647 maxOccurs="unbounded"/>
1648 <xs:element minOccurs="0" maxOccurs="unbounded"
1649 name="PcdError">
1650 <xs:annotation>
1651 <xs:documentation xml:lang="en-us"> Error information
1652 implemented by the module. </xs:documentation>
1653 </xs:annotation>
1654 <xs:complexType>
1655 <xs:sequence>
2bc3256c
LG
1656 <xs:choice>
1657 <xs:element minOccurs="0" maxOccurs="1" name="ValidValueList">
1658 <xs:complexType>
1659 <xs:simpleContent>
1660 <xs:extension base="xs:normalizedString">
1661 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
1662 </xs:extension>
1663 </xs:simpleContent>
1664 </xs:complexType>
1665 </xs:element>
1666 <xs:element minOccurs="0" maxOccurs="1" name="ValidValueRange" type="xs:normalizedString"/>
1667 <xs:element minOccurs="0" maxOccurs="1" name="Expression" type="xs:normalizedString"/>
1668 </xs:choice>
4afd3d04
LG
1669 <xs:element minOccurs="1" maxOccurs="1" name="ErrorNumber">
1670 <xs:annotation>
1671 <xs:documentation xml:lang="en-us"> The minLength of 3 is
1672 required to handle the "0x" prefix to the hex number.
1673 </xs:documentation>
1674 </xs:annotation>
1675 <xs:simpleType>
1676 <xs:restriction base="HexNumber">
1677 <xs:minLength value="3"/>
1678 </xs:restriction>
1679 </xs:simpleType>
1680 </xs:element>
1681 <xs:element minOccurs="0" maxOccurs="unbounded"
1682 name="ErrorMessage">
1683 <xs:complexType>
1684 <xs:simpleContent>
1685 <xs:extension base="xs:string">
1686 <xs:attribute name="Lang" type="xs:language" default="en-us"
1687 use="optional"/>
1688 </xs:extension>
1689 </xs:simpleContent>
1690 </xs:complexType>
1691 </xs:element>
1692 </xs:sequence>
1693 </xs:complexType>
1694 </xs:element>
1695 </xs:sequence>
1696 </xs:complexType>
1697 </xs:element>
1698
1699 <xs:element minOccurs="0" maxOccurs="unbounded" name="PcdExValue">
1700 <xs:annotation>
1701 <xs:documentation xml:lang="en-us"> The element is the
1702 DynamicEx PCD Value that was used during the build.
1703 </xs:documentation>
1704 </xs:annotation>
1705 <xs:complexType>
1706 <xs:sequence>
1707 <xs:element minOccurs="1" maxOccurs="1"
1708 name="TokenSpaceGuidValue" type="RegistryFormatGuid"/>
1709 <xs:element minOccurs="1" maxOccurs="1" name="Token">
1710 <xs:annotation>
1711 <xs:documentation xml:lang="en-us"> The minLength of 3 is
1712 required to handle the "0x" prefix to the hex number.
1713 </xs:documentation>
1714 </xs:annotation>
1715 <xs:simpleType>
1716 <xs:restriction base="HexNumber">
1717 <xs:minLength value="3"/>
1718 <xs:maxLength value="10"/>
1719 </xs:restriction>
1720 </xs:simpleType>
1721 </xs:element>
1722 <xs:element minOccurs="1" maxOccurs="1" name="DatumType"
1723 type="PcdDatumTypes"/>
1724 <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize">
1725 <xs:annotation>
1726 <xs:documentation xml:lang="en-us"> This field is required
1727 if the Pcd Datum Type is VOID* </xs:documentation>
1728 </xs:annotation>
1729 <xs:simpleType>
1730 <xs:restriction base="HexNumber">
1731 <xs:minLength value="3"/>
1732 </xs:restriction>
1733 </xs:simpleType>
1734 </xs:element>
1735 <xs:element minOccurs="1" maxOccurs="1" name="Value"
1736 type="xs:normalizedString"/>
1737 <xs:element ref="HelpText" minOccurs="0"
1738 maxOccurs="unbounded"/>
1739 <xs:element minOccurs="0" maxOccurs="unbounded"
1740 name="PcdError">
1741 <xs:annotation>
1742 <xs:documentation xml:lang="en-us"> Error information
1743 implemented by the module. </xs:documentation>
1744 </xs:annotation>
1745 <xs:complexType>
1746 <xs:sequence>
2bc3256c
LG
1747 <xs:choice>
1748 <xs:element minOccurs="0" maxOccurs="1" name="ValidValueList">
1749 <xs:complexType>
1750 <xs:simpleContent>
1751 <xs:extension base="xs:normalizedString">
1752 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
1753 </xs:extension>
1754 </xs:simpleContent>
1755 </xs:complexType>
1756 </xs:element>
1757 <xs:element minOccurs="0" maxOccurs="1" name="ValidValueRange" type="xs:normalizedString"/>
1758 <xs:element minOccurs="0" maxOccurs="1" name="Expression" type="xs:normalizedString"/>
1759 </xs:choice>
4afd3d04
LG
1760 <xs:element minOccurs="1" maxOccurs="1" name="ErrorNumber">
1761 <xs:annotation>
1762 <xs:documentation xml:lang="en-us"> The minLength of 3 is
1763 required to handle the "0x" prefix to the hex number.
1764 </xs:documentation>
1765 </xs:annotation>
1766 <xs:simpleType>
1767 <xs:restriction base="HexNumber">
1768 <xs:minLength value="3"/>
1769 </xs:restriction>
1770 </xs:simpleType>
1771 </xs:element>
1772 <xs:element minOccurs="0" maxOccurs="unbounded"
1773 name="ErrorMessage">
1774 <xs:complexType>
1775 <xs:simpleContent>
1776 <xs:extension base="xs:string">
1777 <xs:attribute name="Lang" type="xs:language" default="en-us"
1778 use="optional"/>
1779 </xs:extension>
1780 </xs:simpleContent>
1781 </xs:complexType>
1782 </xs:element>
1783 </xs:sequence>
1784 </xs:complexType>
1785 </xs:element>
1786 </xs:sequence>
1787 </xs:complexType>
1788 </xs:element>
1789
1790 <xs:element minOccurs="0" maxOccurs="1" name="LibraryInstances">
1791 <xs:annotation>
1792 <xs:documentation xml:lang="en-us"> This is the actual
1793 library instance that was used to link against the module.
1794 </xs:documentation>
1795 </xs:annotation>
1796 <xs:complexType>
1797 <xs:sequence>
1798 <xs:element minOccurs="1" maxOccurs="unbounded" name="GUID">
1799 <xs:annotation>
1800 <xs:documentation xml:lang="en-us"> This GUID and the
1801 Version attribute uniquely identify the actual Library
1802 Instance linked in this module. </xs:documentation>
1803 </xs:annotation>
1804 <xs:complexType>
1805 <xs:simpleContent>
1806 <xs:extension base="RegistryFormatGuid">
1807 <xs:attribute name="Version" type="xs:decimal"
1808 use="required">
1809 <xs:annotation>
1810 <xs:documentation xml:lang="en-us"> This value, along with
1811 the GUID, is used to uniquely identify this object.
1812 </xs:documentation>
1813 </xs:annotation>
1814 </xs:attribute>
1815 </xs:extension>
1816 </xs:simpleContent>
1817 </xs:complexType>
1818 </xs:element>
1819 </xs:sequence>
1820 </xs:complexType>
1821 </xs:element>
1822
1823 <xs:element minOccurs="0" maxOccurs="unbounded" name="BuildFlags">
1824 <xs:complexType mixed="true">
1825 <xs:simpleContent>
1826 <xs:annotation>
1827 <xs:documentation xml:lang="en-us"> Any description of OS,
1828 Tool, and flags for the individual tool can go in this
1829 section. </xs:documentation>
1830 </xs:annotation>
1831 <xs:extension base="xs:string">
1832 <xs:anyAttribute processContents="lax"/>
1833 </xs:extension>
1834 </xs:simpleContent>
1835 </xs:complexType>
1836 </xs:element>
0d2711a6
LG
1837 </xs:sequence>
1838 </xs:complexType>
1839 </xs:element>
1840 <!-- End of AsBuilt -->
4afd3d04 1841 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
0d2711a6
LG
1842 </xs:sequence>
1843 </xs:complexType>
1844 </xs:element>
1845
1846 </xs:sequence>
1847 </xs:complexType>
1848 </xs:element>
1849 <!-- End of BinaryFiles Section -->
1850
1851 <xs:element minOccurs="0" maxOccurs="1" name="PackageDependencies">
1852 <xs:complexType>
1853 <xs:sequence>
1854 <xs:element minOccurs="1" maxOccurs="unbounded" name="Package">
1855 <xs:complexType>
1856 <xs:sequence>
4afd3d04 1857 <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
0d2711a6
LG
1858 <xs:complexType>
1859 <xs:simpleContent>
4afd3d04
LG
1860 <xs:extension base="xs:string">
1861 <xs:attribute name="Lang" type="xs:language" default="en-us"
1862 use="optional"/>
1863 </xs:extension>
0d2711a6
LG
1864 </xs:simpleContent>
1865 </xs:complexType>
1866 </xs:element>
1867 <xs:element minOccurs="1" maxOccurs="1" name="GUID">
1868 <xs:annotation>
4afd3d04
LG
1869 <xs:documentation xml:lang="en-us"> This GUID and the Version attribute
1870 uniquely identify Package that this Module depends on.
1871 </xs:documentation>
0d2711a6
LG
1872 </xs:annotation>
1873 <xs:complexType>
1874 <xs:simpleContent>
4afd3d04
LG
1875 <xs:extension base="RegistryFormatGuid">
1876 <xs:attribute name="Version" type="xs:decimal" use="optional">
1877 <xs:annotation>
1878 <xs:documentation xml:lang="en-us"> This value, along with
1879 the GUID, is used to uniquely identify this object. If the
1880 version attribute is not specified, the most recent version
1881 of the package can be used. </xs:documentation>
1882 </xs:annotation>
1883 </xs:attribute>
1884 </xs:extension>
0d2711a6
LG
1885 </xs:simpleContent>
1886 </xs:complexType>
1887 </xs:element>
1888 </xs:sequence>
4afd3d04
LG
1889 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
1890 <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
1891 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
0d2711a6
LG
1892 </xs:complexType>
1893 </xs:element>
1894 </xs:sequence>
1895 </xs:complexType>
1896 </xs:element>
1897 <!-- End of PackageDependencies -->
1898
1899 <xs:element minOccurs="0" maxOccurs="1" name="Guids">
1900 <xs:complexType>
1901 <xs:sequence>
1902 <xs:element minOccurs="1" maxOccurs="unbounded" name="GuidCName">
1903 <xs:complexType>
1904 <xs:sequence>
4afd3d04 1905 <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
2bc3256c 1906 <xs:element minOccurs="0" maxOccurs="1" name="GUID" type="RegistryFormatGuid"/>
0d2711a6
LG
1907 <xs:element minOccurs="0" maxOccurs="1" name="VariableName"
1908 type="xs:normalizedString">
1909 <xs:annotation>
4afd3d04
LG
1910 <xs:documentation xml:lang="en-us"> Only valid for Variable GUID types. </xs:documentation>
1911 <xs:documentation> This can be either a Hex Array or C string in unicode
1912 format: L"string" Data. </xs:documentation>
0d2711a6
LG
1913 </xs:annotation>
1914 </xs:element>
4afd3d04 1915 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
0d2711a6
LG
1916 </xs:sequence>
1917 <xs:attribute name="Usage" use="required">
1918 <xs:simpleType>
1919 <xs:restriction base="xs:NCName">
1920 <xs:enumeration value="CONSUMES">
4afd3d04
LG
1921 <xs:annotation>
1922 <xs:documentation xml:lang="en-us">The module does not install
1923 the GUID, and the GUID must be present for the module to
1924 execute. </xs:documentation>
1925 </xs:annotation>
0d2711a6
LG
1926 </xs:enumeration>
1927 <xs:enumeration value="SOMETIMES_CONSUMES">
4afd3d04
LG
1928 <xs:annotation>
1929 <xs:documentation xml:lang="en-us"> The module does not install
1930 the GUID, however, the GUID will be used if it is present.
1931 </xs:documentation>
1932 </xs:annotation>
0d2711a6
LG
1933 </xs:enumeration>
1934 <xs:enumeration value="PRODUCES">
4afd3d04
LG
1935 <xs:annotation>
1936 <xs:documentation xml:lang="en-us"> The module always installs
1937 the GUID. </xs:documentation>
1938 </xs:annotation>
0d2711a6
LG
1939 </xs:enumeration>
1940 <xs:enumeration value="SOMETIMES_PRODUCES">
4afd3d04
LG
1941 <xs:annotation>
1942 <xs:documentation xml:lang="en-us"> The Module will install the
1943 GUID under certain execution paths. </xs:documentation>
1944 </xs:annotation>
0d2711a6
LG
1945 </xs:enumeration>
1946 <xs:enumeration value="UNDEFINED">
4afd3d04
LG
1947 <xs:annotation>
1948 <xs:documentation xml:lang="en-us"> The package creator knows
1949 that a GUID is used, but does not know how it is used.
1950 </xs:documentation>
1951 </xs:annotation>
0d2711a6
LG
1952 </xs:enumeration>
1953 </xs:restriction>
1954 </xs:simpleType>
1955 </xs:attribute>
1956 <xs:attribute name="GuidType" type="GuidListType" use="required"/>
4afd3d04
LG
1957 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
1958 <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
1959 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
0d2711a6
LG
1960 </xs:complexType>
1961 </xs:element>
1962 </xs:sequence>
1963 </xs:complexType>
1964 </xs:element>
1965 <!-- End of Guids Section -->
1966
1967 <xs:element minOccurs="0" maxOccurs="1" name="Protocols">
1968 <xs:annotation>
4afd3d04
LG
1969 <xs:documentation xml:lang="en-us"> A listing of protocols required or produced by this module.
1970 </xs:documentation>
0d2711a6
LG
1971 </xs:annotation>
1972 <xs:complexType>
1973 <xs:sequence>
4afd3d04 1974 <xs:element minOccurs="1" maxOccurs="unbounded" name="Protocol" nillable="true">
0d2711a6
LG
1975 <xs:complexType>
1976 <xs:sequence>
4afd3d04 1977 <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
2bc3256c 1978 <xs:element minOccurs="0" maxOccurs="1" name="GUID" type="RegistryFormatGuid"/>
4afd3d04 1979 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
0d2711a6
LG
1980 </xs:sequence>
1981 <xs:attribute name="Usage" use="required">
1982 <xs:simpleType>
1983 <xs:restriction base="xs:NCName">
1984 <xs:enumeration value="PRODUCES"/>
1985 <xs:enumeration value="SOMETIMES_PRODUCES"/>
1986 <xs:enumeration value="CONSUMES"/>
1987 <xs:enumeration value="SOMETIMES_CONSUMES"/>
1988 <xs:enumeration value="TO_START"/>
1989 <xs:enumeration value="BY_START"/>
1990 <xs:enumeration value="UNDEFINED"/>
1991 </xs:restriction>
1992 </xs:simpleType>
1993 </xs:attribute>
1994 <xs:attribute name="Notify" type="xs:boolean" use="optional"/>
4afd3d04
LG
1995 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
1996 <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
1997 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
0d2711a6
LG
1998 </xs:complexType>
1999 </xs:element>
2000 </xs:sequence>
2001 </xs:complexType>
2002 </xs:element>
2003 <!-- End of Protocols Section -->
2004
2005 <xs:element minOccurs="0" maxOccurs="1" name="PPIs">
2006 <xs:annotation>
4afd3d04
LG
2007 <xs:documentation xml:lang="en-us"> A listing of PPIs required or produced by this module.
2008 </xs:documentation>
0d2711a6
LG
2009 </xs:annotation>
2010 <xs:complexType>
2011 <xs:sequence>
4afd3d04 2012 <xs:element minOccurs="1" maxOccurs="unbounded" name="Ppi" nillable="true">
0d2711a6
LG
2013 <xs:complexType>
2014 <xs:sequence>
4afd3d04 2015 <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
2bc3256c 2016 <xs:element minOccurs="0" maxOccurs="1" name="GUID" type="RegistryFormatGuid"/>
4afd3d04 2017 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
0d2711a6
LG
2018 </xs:sequence>
2019 <xs:attribute name="Usage" use="required">
2020 <xs:simpleType>
2021 <xs:restriction base="xs:NCName">
2022 <xs:enumeration value="PRODUCES"/>
2023 <xs:enumeration value="SOMETIMES_PRODUCES"/>
2024 <xs:enumeration value="CONSUMES"/>
2025 <xs:enumeration value="SOMETIMES_CONSUMES"/>
2026 <xs:enumeration value="UNDEFINED"/>
2027 </xs:restriction>
2028 </xs:simpleType>
2029 </xs:attribute>
2030 <xs:attribute name="Notify" type="xs:boolean" use="optional"/>
4afd3d04
LG
2031 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
2032 <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
2033 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
0d2711a6
LG
2034 </xs:complexType>
2035 </xs:element>
2036 </xs:sequence>
2037 </xs:complexType>
2038 </xs:element>
2039 <!-- End of PPIs Section -->
2040
2041 <xs:element minOccurs="0" maxOccurs="1" name="Externs">
2042 <xs:annotation>
4afd3d04
LG
2043 <xs:documentation xml:lang="en-us"> These elements specify additional information about the
2044 module. This area may be used by tools to generate code. </xs:documentation>
0d2711a6
LG
2045 </xs:annotation>
2046 <xs:complexType>
2047 <xs:sequence>
2048 <xs:element minOccurs="1" maxOccurs="unbounded" name="Extern">
2049 <xs:complexType>
2050 <xs:sequence>
2051 <xs:choice minOccurs="1">
2052 <xs:sequence>
4afd3d04
LG
2053 <xs:element minOccurs="0" maxOccurs="1" name="EntryPoint"
2054 type="xs:NCName"/>
2055 <xs:element minOccurs="0" maxOccurs="1" name="UnloadImage"
2056 type="xs:NCName"/>
0d2711a6
LG
2057 </xs:sequence>
2058 <xs:sequence>
4afd3d04
LG
2059 <xs:element minOccurs="0" maxOccurs="1" name="Constructor"
2060 type="xs:NCName"/>
2061 <xs:element minOccurs="0" maxOccurs="1" name="Destructor"
2062 type="xs:NCName"/>
0d2711a6
LG
2063 </xs:sequence>
2064 </xs:choice>
2065 <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
2066 </xs:sequence>
4afd3d04
LG
2067 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
2068 <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
2069 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
0d2711a6
LG
2070 </xs:complexType>
2071 </xs:element>
2072 </xs:sequence>
2073 </xs:complexType>
2074 </xs:element>
2075 <!-- End of Externs Section -->
2076
2077 <xs:element minOccurs="0" maxOccurs="1" name="PcdCoded">
2078 <xs:annotation>
4afd3d04
LG
2079 <xs:documentation xml:lang="en-us"> This section describes how a platform is coded with respect
2080 to the platform configuration knobs. </xs:documentation>
0d2711a6
LG
2081 </xs:annotation>
2082 <xs:complexType>
2083 <xs:sequence>
2084 <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">
2085 <xs:complexType>
2086 <xs:sequence>
4afd3d04
LG
2087 <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
2088 <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCName"
0d2711a6 2089 type="xs:NCName"/>
0d2711a6
LG
2090 <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue"
2091 type="xs:normalizedString"/>
4afd3d04 2092 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
0d2711a6 2093 </xs:sequence>
4afd3d04 2094 <xs:attribute name="PcdItemType" type="PcdItemTypes" use="required"/>
0d2711a6
LG
2095 <xs:attribute name="PcdUsage" use="required">
2096 <xs:simpleType>
2097 <xs:restriction base="xs:NCName">
2098 <xs:enumeration value="PRODUCES"/>
2099 <xs:enumeration value="SOMETIMES_PRODUCES"/>
2100 <xs:enumeration value="CONSUMES"/>
2101 <xs:enumeration value="SOMETIMES_CONSUMES"/>
2102 <xs:enumeration value="UNDEFINED"/>
2103 </xs:restriction>
2104 </xs:simpleType>
2105
2106
2107 </xs:attribute>
4afd3d04
LG
2108 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
2109 <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
2110 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
0d2711a6
LG
2111 </xs:complexType>
2112 </xs:element>
2113 </xs:sequence>
2114 </xs:complexType>
2115 </xs:element>
2116 <!-- End of PcdCoded Section -->
2117
2118 <xs:element minOccurs="0" maxOccurs="unbounded" name="PeiDepex">
2119 <xs:annotation>
4afd3d04
LG
2120 <xs:documentation xml:lang="en-us"> This is the PEI dependency expression for a Dependency
2121 Section. </xs:documentation>
0d2711a6
LG
2122 </xs:annotation>
2123 <xs:complexType>
2124 <xs:sequence>
4afd3d04 2125 <xs:element name="Expression" type="xs:string" minOccurs="1" maxOccurs="1">
0d2711a6 2126 <xs:annotation>
4afd3d04
LG
2127 <xs:documentation xml:lang="en-us"> An in-fix expression, of C identifiers and TRUE,
2128 FALSE, AND, OR, NOT, BEFORE, and AFTER as well as parenthesis () in the in-fix
2129 notation. The operators are restricted to grammar defined in the PI
0d2711a6
LG
2130 specification. </xs:documentation>
2131 </xs:annotation>
2132 </xs:element>
2133 <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
2134 </xs:sequence>
2135 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
2136 <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
2137 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
2138 </xs:complexType>
2139 </xs:element>
2140 <!-- End of PeiDepex Section -->
2141
2142 <xs:element minOccurs="0" maxOccurs="unbounded" name="DxeDepex">
2143 <xs:annotation>
4afd3d04
LG
2144 <xs:documentation xml:lang="en-us"> This is the DXE dependency expression for a Dependency
2145 Section. </xs:documentation>
0d2711a6
LG
2146 </xs:annotation>
2147 <xs:complexType>
2148 <xs:sequence>
4afd3d04 2149 <xs:element name="Expression" type=" xs:string " minOccurs="1" maxOccurs="1">
0d2711a6 2150 <xs:annotation>
4afd3d04
LG
2151 <xs:documentation xml:lang="en-us"> An in-fix expression, of C identifiers and TRUE,
2152 FALSE, AND, OR, NOT, BEFORE, and AFTER as well as parenthesis () in the in-fix
2153 notation. The operators are restricted to grammar defined in the PI
0d2711a6
LG
2154 specification. </xs:documentation>
2155 </xs:annotation>
2156 </xs:element>
2157 <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
2158 </xs:sequence>
2159 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
2160 <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
2161 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
2162 </xs:complexType>
2163 </xs:element>
2164 <!-- End of DxeDepex Section -->
2165
2166 <xs:element minOccurs="0" maxOccurs="unbounded" name="SmmDepex">
2167 <xs:annotation>
4afd3d04
LG
2168 <xs:documentation xml:lang="en-us"> This is the SMM dependency expression for a Dependency
2169 Section. </xs:documentation>
0d2711a6
LG
2170 </xs:annotation>
2171 <xs:complexType>
2172 <xs:sequence>
4afd3d04 2173 <xs:element name="Expression" type=" xs:string " minOccurs="1" maxOccurs="1">
0d2711a6 2174 <xs:annotation>
4afd3d04
LG
2175 <xs:documentation xml:lang="en-us"> An in-fix expression, of C identifiers and TRUE,
2176 FALSE, AND, OR, NOT, BEFORE, and AFTER as well as parenthesis () in the in-fix
2177 notation. The operators are restricted to grammar defined in the PI
0d2711a6
LG
2178 specification. </xs:documentation>
2179 </xs:annotation>
2180 </xs:element>
2181 <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
2182 </xs:sequence>
2183 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
2184 <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
2185 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
2186 </xs:complexType>
2187 </xs:element>
2188 <!-- End of SmmDepex Section -->
2189
2190
2191 <xs:element minOccurs="0" maxOccurs="1" name="MiscellaneousFiles">
2192 <xs:annotation>
4afd3d04
LG
2193 <xs:documentation xml:lang="en-us"> This section is used to provide comments and/or list
2194 auxiliary files, such as pdb or map files. </xs:documentation>
0d2711a6
LG
2195 </xs:annotation>
2196 <xs:complexType>
2197 <xs:sequence>
2198 <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
2199 <xs:complexType>
2200 <xs:simpleContent>
2201 <xs:extension base="xs:string">
4afd3d04
LG
2202 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
2203 />
0d2711a6
LG
2204 </xs:extension>
2205 </xs:simpleContent>
2206 </xs:complexType>
2207 </xs:element>
2208 <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
2209 <xs:annotation>
4afd3d04
LG
2210 <xs:documentation xml:lang="en-us"> This is the path and filename location within
2211 the ZIP file. </xs:documentation>
0d2711a6
LG
2212 </xs:annotation>
2213 <xs:complexType>
2214 <xs:simpleContent>
2215 <xs:extension base="xs:anyURI">
4afd3d04
LG
2216 <xs:attribute name="Executable" type="xs:boolean" default="false"
2217 use="optional">
0d2711a6 2218 <xs:annotation>
4afd3d04
LG
2219 <xs:documentation xml:lang="en-us"> If true, used by installation
2220 tools to ensure that a file that must be executable has the
2221 correct properties to permit execution. </xs:documentation>
0d2711a6
LG
2222 </xs:annotation>
2223 </xs:attribute>
2224 </xs:extension>
2225 </xs:simpleContent>
2226 </xs:complexType>
2227 </xs:element>
2228 </xs:sequence>
2229 </xs:complexType>
2230 </xs:element>
2231 <!-- End of Module Surface Area Misc Section -->
2232
2233 <xs:element minOccurs="0" maxOccurs="unbounded" name="UserExtensions">
2234 <xs:annotation>
4afd3d04
LG
2235 <xs:documentation xml:lang="en-us"> This section is used for any processing instructions that
2236 may be custom to the content provided by the distribution that are common to module. </xs:documentation>
0d2711a6 2237 <xs:documentation xml:lang="en-us"> The content is vendor specific. </xs:documentation>
4afd3d04
LG
2238 <xs:documentation xml:lang="en-us"> The content can be plain text as well as any user-defined,
2239 properly formatted XML structure. </xs:documentation>
0d2711a6
LG
2240 </xs:annotation>
2241 <xs:complexType mixed="true">
2242 <xs:attribute name="UserId" type="xs:NCName" use="required">
2243 <xs:annotation>
4afd3d04
LG
2244 <xs:documentation xml:lang="en-us"> This is a single word identifier for grouping
2245 similar content. For example, ReferenceBuild might be used to identify non-PI
2246 compliant build steps, with two different UserExtensions sections, one with an
2247 Identifier of Prebuild, and another of PostBuild. Both UserExtensions sections would
2248 use the same UserId. </xs:documentation>
0d2711a6
LG
2249 </xs:annotation>
2250 </xs:attribute>
2251 <xs:attribute name="Identifier" type="xs:string" use="required">
2252 <xs:annotation>
4afd3d04
LG
2253 <xs:documentation xml:lang="en-us"> This can be any string used to differentiate or
2254 identify this section from other UserExtensions sections. </xs:documentation>
2255 <xs:documentation xml:lang="en-us"> For example, a PRE_PROCESS Identifier might indicate
2256 specific steps and tools required before processing module content, while a
2257 different UserExtensions section with a POST_PROCESS Identifier might describe steps
2258 that need to be executed after operations on this module. </xs:documentation>
0d2711a6
LG
2259 </xs:annotation>
2260 </xs:attribute>
2261 <xs:anyAttribute processContents="lax"/>
2262 </xs:complexType>
2263 </xs:element>
2264 <!-- End of Module Surface Area UserExtensions Section -->
2265
2266 </xs:sequence>
2267 <xs:attribute name="BinaryModule" type="xs:boolean" default="false" use="optional">
2268 <xs:annotation>
4afd3d04
LG
2269 <xs:documentation xml:lang="en-us"> This attribute is used when the binaries are distributed for
2270 this module and no code generation from source files is required. If set, then the BinaryFiles
2271 section should be used, and any files listed in the SourceFiles section do not have to be built.
2272 Additionally, the AsBuilt section for each binary file must be included. </xs:documentation>
0d2711a6
LG
2273 </xs:annotation>
2274 </xs:attribute>
2275 </xs:complexType>
2276
2277 </xs:element>
2278 <!-- End of the ModuleSurfaceArea element. -->
2279
2280 <xs:element name="Tools">
2281 <xs:complexType>
2282 <xs:sequence>
2283 <xs:element minOccurs="0" maxOccurs="1" name="Header">
2284 <xs:complexType>
2285 <xs:sequence>
4afd3d04 2286 <xs:element minOccurs="1" maxOccurs="1" name="Name" type="xs:normalizedString">
0d2711a6 2287 <xs:annotation>
4afd3d04
LG
2288 <xs:documentation xml:lang="en-us">This is the User Interface Name for this Tools
2289 Distribution.</xs:documentation>
0d2711a6
LG
2290 </xs:annotation>
2291 </xs:element>
4afd3d04 2292 <xs:element minOccurs="0" maxOccurs="1" name="Copyright" type="xs:string">
0d2711a6 2293 <xs:annotation>
4afd3d04
LG
2294 <xs:documentation xml:lang="en-us"> This is only required if the Copyright is
2295 different from the Distribution Package copyright. </xs:documentation>
0d2711a6
LG
2296 </xs:annotation>
2297 </xs:element>
2298 <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
2299 <xs:annotation>
4afd3d04
LG
2300 <xs:documentation xml:lang="en-us"> This is only required if the License is
2301 different from the Distribution Package license. </xs:documentation>
0d2711a6
LG
2302 </xs:annotation>
2303 </xs:element>
2bc3256c 2304 <xs:element minOccurs="0" maxOccurs="1" name="Abstract">
0d2711a6 2305 <xs:annotation>
4afd3d04
LG
2306 <xs:documentation xml:lang="en-us"> This is only required if the Abstract is
2307 different from the Distribution Package Abstract. </xs:documentation>
0d2711a6 2308 </xs:annotation>
2bc3256c
LG
2309 <xs:complexType>
2310 <xs:simpleContent>
2311 <xs:extension base="xs:normalizedString">
2312 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
2313 </xs:extension>
2314 </xs:simpleContent>
2315 </xs:complexType>
0d2711a6 2316 </xs:element>
2bc3256c 2317 <xs:element minOccurs="0" maxOccurs="1" name="Description">
0d2711a6 2318 <xs:annotation>
4afd3d04
LG
2319 <xs:documentation xml:lang="en-us"> This is only required if the Description is
2320 different from the Distribution Package Description. </xs:documentation>
0d2711a6 2321 </xs:annotation>
2bc3256c
LG
2322 <xs:complexType>
2323 <xs:simpleContent>
2324 <xs:extension base="xs:string">
2325 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
2326 </xs:extension>
2327 </xs:simpleContent>
2328 </xs:complexType>
2329
0d2711a6
LG
2330 </xs:element>
2331 </xs:sequence>
2332 </xs:complexType>
2333 </xs:element>
2334 <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
2335 <xs:annotation>
4afd3d04
LG
2336 <xs:documentation xml:lang="en-us"> This is the path and filename location within the ZIP file.
2337 </xs:documentation>
0d2711a6
LG
2338 </xs:annotation>
2339 <xs:complexType>
2340 <xs:simpleContent>
2341 <xs:extension base="xs:anyURI">
2342 <xs:attribute name="OS" type="SupportedOs" use="optional">
2343 <xs:annotation>
4afd3d04
LG
2344 <xs:documentation xml:lang="en-us"> This is required for tools that execute; it
2345 should not be used for configuration files. </xs:documentation>
0d2711a6
LG
2346 </xs:annotation>
2347 </xs:attribute>
4afd3d04 2348 <xs:attribute name="Executable" type="xs:boolean" default="false" use="optional">
0d2711a6 2349 <xs:annotation>
4afd3d04
LG
2350 <xs:documentation xml:lang="en-us"> If true, used by installation tools to
2351 ensure that a file that must be executable has the correct properties to
2352 permit execution. </xs:documentation>
0d2711a6
LG
2353 </xs:annotation>
2354 </xs:attribute>
2355 </xs:extension>
2356 </xs:simpleContent>
2357 </xs:complexType>
2358 </xs:element>
2359 </xs:sequence>
2360 </xs:complexType>
2361 </xs:element>
2362 <!-- End of the Tools element. -->
2363
2364 <xs:element name="MiscellaneousFiles">
2365 <xs:annotation>
4afd3d04
LG
2366 <xs:documentation xml:lang="en-us"> This section contains a list of files that are not part of the code
2367 distributed with modules, packages or tools. </xs:documentation>
0d2711a6
LG
2368 </xs:annotation>
2369 <xs:complexType>
2370 <xs:sequence>
2371 <xs:element minOccurs="0" maxOccurs="1" name="Header">
2372 <xs:complexType>
2373 <xs:sequence>
4afd3d04 2374 <xs:element minOccurs="0" maxOccurs="1" name="Name" type="xs:normalizedString">
0d2711a6 2375 <xs:annotation>
4afd3d04
LG
2376 <xs:documentation xml:lang="en-us"> The User interface name for this content.
2377 </xs:documentation>
0d2711a6
LG
2378 </xs:annotation>
2379 </xs:element>
4afd3d04 2380 <xs:element minOccurs="0" maxOccurs="1" name="Copyright" type="xs:string">
0d2711a6 2381 <xs:annotation>
4afd3d04
LG
2382 <xs:documentation xml:lang="en-us"> This is only required if the Copyright is
2383 different from the Distribution Package Copyright. </xs:documentation>
0d2711a6
LG
2384 </xs:annotation>
2385 </xs:element>
2386 <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
2387 <xs:annotation>
4afd3d04
LG
2388 <xs:documentation xml:lang="en-us"> This is only required if the License is
2389 different from the Distribution Package License. </xs:documentation>
0d2711a6
LG
2390 </xs:annotation>
2391 </xs:element>
4afd3d04 2392 <xs:element minOccurs="0" maxOccurs="1" name="Abstract" type="xs:normalizedString"/>
0d2711a6
LG
2393 <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
2394 <xs:complexType>
2395 <xs:simpleContent>
2396 <xs:extension base="xs:string">
4afd3d04
LG
2397 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
2398 />
0d2711a6
LG
2399 </xs:extension>
2400 </xs:simpleContent>
2401 </xs:complexType>
2402 </xs:element>
2403 </xs:sequence>
2404 </xs:complexType>
2405 </xs:element>
2406 <xs:element minOccurs="0" maxOccurs="unbounded" name="Filename">
2407 <xs:annotation>
4afd3d04
LG
2408 <xs:documentation xml:lang="en-us"> This is the path and filename location within the ZIP file.
2409 </xs:documentation>
0d2711a6
LG
2410 </xs:annotation>
2411 <xs:complexType>
2412 <xs:simpleContent>
2413 <xs:extension base="xs:anyURI">
4afd3d04 2414 <xs:attribute name="Executable" type="xs:boolean" default="false" use="optional">
0d2711a6 2415 <xs:annotation>
4afd3d04
LG
2416 <xs:documentation xml:lang="en-us"> If true, used by installation tools to
2417 ensure that a file that must be executable has the correct properties to
2418 permit execution. </xs:documentation>
0d2711a6
LG
2419 </xs:annotation>
2420 </xs:attribute>
2421 </xs:extension>
2422 </xs:simpleContent>
2423 </xs:complexType>
2424 </xs:element>
2425 </xs:sequence>
2426 </xs:complexType>
2427 </xs:element>
2428 <!-- End of the Misc element. -->
2429
2430 <xs:element name="UserExtensions">
2431 <xs:complexType mixed="true">
2432 <xs:sequence>
2433 <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
2434 </xs:sequence>
2435 <xs:attribute name="UserId" type="xs:NCName" use="required">
2436 <xs:annotation>
4afd3d04
LG
2437 <xs:documentation xml:lang="en-us"> This is a single word identifier for grouping similar content.
2438 For example, ReferenceBuild might be used to identify non-PI compliant build steps, with two
2439 different UserExtensions sections, one with an Identifier of Prebuild, and another of PostBuild.
2440 Both UserExtensions sections would use the same UserId. </xs:documentation>
0d2711a6
LG
2441 </xs:annotation>
2442 </xs:attribute>
2443 <xs:attribute name="Identifier" type="xs:string" use="optional">
2444 <xs:annotation>
4afd3d04
LG
2445 <xs:documentation xml:lang="en-us"> This can be any string used to differentiate or identify this
2446 section from other UserExtensions sections. </xs:documentation>
2447 <xs:documentation xml:lang="en-us"> For example, a PRE_PROCESS Identifier might indicate specific
2448 steps and tools required before processing distribution package content, while a different
2449 UserExtensions section with a POST_PROCESS Identifier might describe steps that need to be
2450 executed after operations on this content. </xs:documentation>
0d2711a6
LG
2451 </xs:annotation>
2452 </xs:attribute>
2453 <xs:anyAttribute processContents="lax"/>
2454 </xs:complexType>
2455 </xs:element>
2456 <!-- The following elsements are common definitions used with the ref attribute for elements. -->
2457
2458 <xs:element name="HelpText">
2459 <xs:complexType>
2460 <xs:simpleContent>
2461 <xs:extension base="xs:string">
2462 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
2463 </xs:extension>
2464 </xs:simpleContent>
2465 </xs:complexType>
2466 </xs:element>
2467
2468 <!-- The following attribute groups are used in various elements above. -->
2469
2470 <xs:attributeGroup name="SupportedArchMod">
2471 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
2472 <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
2473 </xs:attributeGroup>
2474
2475 <!-- The following data types are used to restrict content. -->
2476
2477 <xs:simpleType name="ArchListType">
2478 <xs:list itemType="ArchTypes"/>
2479 </xs:simpleType>
2480
2481 <xs:simpleType name="ArchTypes">
2482 <xs:restriction base="xs:NCName">
2483 <xs:enumeration value="IA32"/>
2484 <xs:enumeration value="X64"/>
2485 <xs:enumeration value="IPF"/>
2486 <xs:enumeration value="EBC"/>
4afd3d04 2487 <xs:enumeration value="ARM"/>
0d2711a6
LG
2488 <xs:pattern value="([A-Z])([a-zA-Z0-9])*">
2489 <xs:annotation>
4afd3d04
LG
2490 <xs:documentation xml:lang="en-us"> Any processor architecture not listed above. The Architecture
2491 must be a target architecture of one or more compiler tool chains. </xs:documentation>
0d2711a6
LG
2492 </xs:annotation>
2493 </xs:pattern>
2494 </xs:restriction>
2495 </xs:simpleType>
2496
2497
2498 <xs:simpleType name="FamilyTypes">
2499 <xs:restriction base="xs:NCName">
2500 <xs:enumeration value="MSFT"/>
2501 <xs:enumeration value="GCC"/>
2502 <xs:pattern value="[A-Z][a-zA-Z0-9]*">
2503 <xs:annotation>
4afd3d04
LG
2504 <xs:documentation xml:lang="en-us"> Any other family of build utilities for which compiler tools
2505 exist. </xs:documentation>
0d2711a6
LG
2506 </xs:annotation>
2507 </xs:pattern>
2508 </xs:restriction>
2509 </xs:simpleType>
2510
2511 <xs:simpleType name="GuidListType">
2512 <xs:list itemType="GuidTypes"/>
2513 </xs:simpleType>
2514
2515 <xs:simpleType name="GuidTypes">
2516 <xs:restriction base="xs:NCName">
2517 <xs:enumeration value="Event"/>
2518 <xs:enumeration value="File"/>
2519 <xs:enumeration value="FV"/>
2520 <xs:enumeration value="GUID"/>
2bc3256c 2521 <xs:enumeration value="HII"/>
0d2711a6
LG
2522 <xs:enumeration value="Hii"/>
2523 <xs:enumeration value="HOB"/>
2524 <xs:enumeration value="SystemTable"/>
2525 <xs:enumeration value="TokenSpaceGuid"/>
2526 <xs:enumeration value="Variable"/>
2527 <xs:enumeration value="UNDEFINED"/>
2528 </xs:restriction>
2529 </xs:simpleType>
2530
2531 <xs:simpleType name="HexNumber">
2532 <xs:restriction base="xs:hexBinary">
2533 <xs:pattern value="0x([a-fA-F0-9])+"/>
2534 </xs:restriction>
2535 </xs:simpleType>
2536
2537 <xs:simpleType name="Md5Sum">
2538 <xs:restriction base="xs:normalizedString">
2539 <xs:pattern value="[a-zA-Z0-9]{32}"/>
2540 </xs:restriction>
2541 </xs:simpleType>
2542
2543 <xs:simpleType name="ModuleListType">
2544 <xs:list itemType="ModuleTypes"/>
2545 </xs:simpleType>
2546
2547 <xs:simpleType name="ModuleTypes">
2548 <xs:annotation>
4afd3d04
LG
2549 <xs:documentation xml:lang="en-us"> The following module types are defined by specifications. </xs:documentation>
2550 <xs:documentation xml:lang="en-us"> Module types for components and libraries defined for this distribution
2551 mechanism. </xs:documentation>
0d2711a6
LG
2552 </xs:annotation>
2553 <xs:restriction base="xs:NCName">
2554 <xs:enumeration value="BASE ">
2555 <xs:annotation>
4afd3d04 2556 <xs:documentation xml:lang="en-us"> Use of this module is not restricted. </xs:documentation>
0d2711a6
LG
2557 </xs:annotation>
2558 </xs:enumeration>
2559 <xs:enumeration value="DXE_CORE">
2560 <xs:annotation>
4afd3d04
LG
2561 <xs:documentation xml:lang="en-us"> This module is only applicable to the DXE core.
2562 </xs:documentation>
0d2711a6
LG
2563 </xs:annotation>
2564 </xs:enumeration>
2565 <xs:enumeration value="DXE_DRIVER">
2566 <xs:annotation>
4afd3d04
LG
2567 <xs:documentation xml:lang="en-us"> This module is only applicable to a DXE driver.
2568 </xs:documentation>
0d2711a6
LG
2569 </xs:annotation>
2570 </xs:enumeration>
2571 <xs:enumeration value="DXE_RUNTIME_DRIVER">
2572 <xs:annotation>
4afd3d04
LG
2573 <xs:documentation xml:lang="en-us"> This module is only applicable to a DXE runtime driver.
2574 </xs:documentation>
0d2711a6
LG
2575 </xs:annotation>
2576 </xs:enumeration>
2577 <xs:enumeration value="DXE_SAL_DRIVER">
2578 <xs:annotation>
4afd3d04
LG
2579 <xs:documentation xml:lang="en-us"> This module is only applicable to an IPF DXE runtime driver.
2580 </xs:documentation>
0d2711a6
LG
2581 </xs:annotation>
2582 </xs:enumeration>
2583 <xs:enumeration value="DXE_SMM_DRIVER">
2584 <xs:annotation>
4afd3d04
LG
2585 <xs:documentation xml:lang="en-us"> This module is only applicable to a DXE SMM driver.
2586 </xs:documentation>
0d2711a6
LG
2587 </xs:annotation>
2588 </xs:enumeration>
2589 <xs:enumeration value="PEI_CORE">
2590 <xs:annotation>
4afd3d04
LG
2591 <xs:documentation xml:lang="en-us"> This module is only applicable to the PEI core.
2592 </xs:documentation>
0d2711a6
LG
2593 </xs:annotation>
2594 </xs:enumeration>
2595 <xs:enumeration value="PEIM">
2596 <xs:annotation>
4afd3d04 2597 <xs:documentation xml:lang="en-us"> This module is only valid for PEI modules. </xs:documentation>
0d2711a6
LG
2598 </xs:annotation>
2599 </xs:enumeration>
2600 <xs:enumeration value="SEC">
2601 <xs:annotation>
4afd3d04
LG
2602 <xs:documentation xml:lang="en-us"> This module is only applicable to Security phase.
2603 </xs:documentation>
0d2711a6
LG
2604 </xs:annotation>
2605 </xs:enumeration>
2606 <xs:enumeration value="UEFI_DRIVER">
2607 <xs:annotation>
4afd3d04 2608 <xs:documentation xml:lang="en-us"> This module is only valid for UEFI drivers. </xs:documentation>
0d2711a6
LG
2609 </xs:annotation>
2610 </xs:enumeration>
2611 <xs:enumeration value="UEFI_RUNTIME_DRIVER">
2612 <xs:annotation>
2613 <xs:documentation xml:lang="en-us"> This module is only valid for UEFI runtime
2614 drivers.</xs:documentation>
2615 </xs:annotation>
2616 </xs:enumeration>
2617 <xs:enumeration value="UEFI_APPLICATION">
2618 <xs:annotation>
4afd3d04
LG
2619 <xs:documentation xml:lang="en-us"> This module is only valid for UEFI applications.
2620 </xs:documentation>
0d2711a6
LG
2621 </xs:annotation>
2622 </xs:enumeration>
2623 <xs:enumeration value="SMM_CORE">
2624 <xs:annotation>
2625 <xs:documentation xml:lang="en-us"> This module is only applicable to the SMM
2626 core.</xs:documentation>
2627 </xs:annotation>
2628 </xs:enumeration>
2629 <xs:enumeration value="USER_DEFINED">
2630 <xs:annotation>
4afd3d04
LG
2631 <xs:documentation xml:lang="en-us"> This content is restricted to a specific implementation.
2632 </xs:documentation>
0d2711a6
LG
2633 </xs:annotation>
2634 </xs:enumeration>
2635 <xs:enumeration value="UNDEFINED">
2636 <xs:annotation>
4afd3d04
LG
2637 <xs:documentation xml:lang="en-us"> This enumeration is for use in a list that where the package
2638 creator does not know the what module types are supported by a module. </xs:documentation>
0d2711a6
LG
2639 </xs:annotation>
2640 </xs:enumeration>
2641 <xs:pattern value="([A-Z])([a-zA-Z0-9])*">
2642 <xs:annotation>
4afd3d04
LG
2643 <xs:documentation xml:lang="en-us"> This pattern has been added for use in a module lists - for
2644 future expansion. </xs:documentation>
0d2711a6
LG
2645 </xs:annotation>
2646 </xs:pattern>
2647 </xs:restriction>
2648 </xs:simpleType>
2649
2650 <xs:simpleType name="PcdDatumTypes">
2651 <xs:annotation>
4afd3d04
LG
2652 <xs:documentation xml:lang="en-us"> The following data types are defined by the PCD specification (or PCD
2653 section of the UEFI/PI specifications.) </xs:documentation>
0d2711a6
LG
2654 </xs:annotation>
2655 <xs:restriction base="xs:normalizedString">
2656 <xs:enumeration value="UINT8"/>
2657 <xs:enumeration value="UINT16"/>
2658 <xs:enumeration value="UINT32"/>
2659 <xs:enumeration value="UINT64"/>
2660 <xs:enumeration value="BOOLEAN"/>
2661 <xs:enumeration value="VOID*"/>
2662 </xs:restriction>
2663 </xs:simpleType>
2664
2665 <xs:simpleType name="PcdItemListType">
2666 <xs:list itemType="PcdItemTypes"/>
2667 </xs:simpleType>
2668
2669 <xs:simpleType name="PcdItemTypes">
2670 <xs:restriction base="xs:NCName">
2671 <xs:enumeration value="FeaturePcd">
2672 <xs:annotation>
4afd3d04
LG
2673 <xs:documentation xml:lang="en-us"> The Feature PCD is a binary, evaluating to either true or false.
2674 This is used during build to include/exclude content. It can also be used during execution to
2675 force execution paths within drivers, or to enable/disable features within a driver for a given
2676 platform. </xs:documentation>
0d2711a6
LG
2677 </xs:annotation>
2678 </xs:enumeration>
2679 <xs:enumeration value="FixedPcd">
2680 <xs:annotation>
4afd3d04
LG
2681 <xs:documentation xml:lang="en-us"> The Fixed PCD is a #define value that is set at build time.
2682 </xs:documentation>
0d2711a6
LG
2683 </xs:annotation>
2684 </xs:enumeration>
2685 <xs:enumeration value="PatchPcd">
2686 <xs:annotation>
4afd3d04
LG
2687 <xs:documentation xml:lang="en-us"> The Patch PCD is a #define that is set at build time, and that
2688 can be modified within a binary file. Additional information, such as the offset location of the
2689 value, along with it's length may need to be provided.</xs:documentation>
0d2711a6
LG
2690 </xs:annotation>
2691 </xs:enumeration>
2692 <xs:enumeration value="Pcd">
2693 <xs:annotation>
4afd3d04
LG
2694 <xs:documentation xml:lang="en-us"> This PCD type has an overloaded definition. Prior to build, the
2695 platform integrator may choose to implement a PCD as Fixed, Patchable or a Dynamic PCD. If the
2696 platform integrator choose to use the PCD as dynamic, then a PCD driver is required in the
2697 platform (PEI/DXE/both) to track the PCD in some sort of 'database' of these items. For Dynamic
2698 PCDs, the PcdGet* must pass in the token space guid and the token number to retrieve data
2699 (PcdSet* also needs these values.) </xs:documentation>
0d2711a6
LG
2700 </xs:annotation>
2701 </xs:enumeration>
2702 <xs:enumeration value="PcdEx">
2703 <xs:annotation>
4afd3d04
LG
2704 <xs:documentation xml:lang="en-us"> The PCD can only be used as Dynamic, and the platform firmware
2705 must contain a driver to maintain a 'database' of these items. For Dynamic PCDs, the PcdGet*
2706 must pass in the token space guid and the token number to retrieve data (PcdSet* also needs
2707 these values.) </xs:documentation>
0d2711a6
LG
2708 </xs:annotation>
2709 </xs:enumeration>
2710 </xs:restriction>
2711 </xs:simpleType>
2712
0d2711a6
LG
2713 <xs:simpleType name="RegistryFormatGuid">
2714 <xs:annotation>
4afd3d04
LG
2715 <xs:documentation xml:lang="en-us"> A GUID must contain five different Hexadecimal character sets that are
2716 separated by a dash (-) character. </xs:documentation>
0d2711a6
LG
2717 </xs:annotation>
2718 <xs:restriction base="xs:string">
4afd3d04 2719 <xs:pattern value="\s*[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\s*"/>
0d2711a6
LG
2720 </xs:restriction>
2721 </xs:simpleType>
2722
2723 <xs:simpleType name="SupportedOs">
2724 <xs:annotation>
4afd3d04
LG
2725 <xs:documentation xml:lang="en-us"> The EDK II build system supports workstations running one of the
2726 following supported operating systems. This is the OS for the developer's workstation, not the target
2727 platform. </xs:documentation>
0d2711a6
LG
2728 </xs:annotation>
2729 <xs:restriction base="xs:string">
2730 <xs:enumeration value="Win32">
2731 <xs:annotation>
4afd3d04
LG
2732 <xs:documentation xml:lang="en-us"> For Windows 2003, Windows XP and Windows Vista.
2733 </xs:documentation>
0d2711a6
LG
2734 </xs:annotation>
2735 </xs:enumeration>
2736 <xs:enumeration value="Win64">
2737 <xs:annotation>
4afd3d04
LG
2738 <xs:documentation xml:lang="en-us"> For Windows 2003, Windows XP and Windows Vista.
2739 </xs:documentation>
0d2711a6
LG
2740 </xs:annotation>
2741 </xs:enumeration>
2bc3256c
LG
2742 <xs:enumeration value="RedHat32"/>
2743 <xs:enumeration value="RedHat64"/>
2744 <xs:enumeration value="SuSE32"/>
2745 <xs:enumeration value="SuSE64"/>
0d2711a6
LG
2746 <xs:enumeration value="Linux32"/>
2747 <xs:enumeration value="Linux64"/>
2748 <xs:enumeration value="OS/X32"/>
2749 <xs:enumeration value="OS/X64"/>
2bc3256c 2750 <xs:enumeration value="Generic"/>
0d2711a6
LG
2751 <xs:enumeration value="GenericWin">
2752 <xs:annotation>
4afd3d04
LG
2753 <xs:documentation xml:lang="en-us"> Typically, this is used for Windows Batch files.
2754 </xs:documentation>
0d2711a6
LG
2755 </xs:annotation>
2756 </xs:enumeration>
2757 <xs:enumeration value="GenericNix">
2758 <xs:annotation>
4afd3d04
LG
2759 <xs:documentation xml:lang="en-us"> Typically use for shell scripts - valid for any Linux and Mac
2760 OS/X. </xs:documentation>
0d2711a6
LG
2761 </xs:annotation>
2762 </xs:enumeration>
2763 <xs:pattern value="[a-zA-Z]([a-zA-Z0-9])*"/>
2764 </xs:restriction>
2765 </xs:simpleType>
30fdf114
LG
2766
2767</xs:schema>