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