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