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