git-svn-id: https://buildtools.tianocore.org/svn/buildtools/trunk/BaseTools@32 7335b3...
[people/mcb30/basetools.git] / Conf / XMLSchema / FrameworkDataTypes.xsd
1 <?xml version="1.0" encoding="UTF-8"?>\r
2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://www.TianoCore.org/2006/Edk2.0" targetNamespace="http://www.TianoCore.org/2006/Edk2.0">\r
3   <!--\r
4     Filename: FrameworkDataTypes.xsd\r
5     \r
6     Copyright (c) 2006, Intel Corp.\r
7     All rights reserved. This program and the accompanying materials\r
8     are licensed and made available under the terms and conditions of the BSD License\r
9     which may be found at http://opensource.org/licenses/bsd-license.php\r
10     \r
11     THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12     WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13     \r
14   -->\r
15   <xs:annotation>\r
16     <xs:documentation xml:lang="en">This schema defines EFI and Framework Data Types. Only simpleType are specified in this file. </xs:documentation>\r
17   </xs:annotation>\r
18   <xs:include schemaLocation="NamingConvention.xsd"/>\r
19   <xs:simpleType name="PrimaryArchListType">\r
20     <xs:list itemType="SupportedArchitectures"/>\r
21   </xs:simpleType>\r
22   <xs:simpleType name="ArchListType">\r
23     <xs:restriction base="PrimaryArchListType">\r
24       <xs:minLength value="1"/>\r
25     </xs:restriction>\r
26   </xs:simpleType>\r
27   <xs:simpleType name="BlockNameType">\r
28     <xs:restriction base="UCNameType">\r
29       <xs:pattern value="\s*BLOCK[A-F0-9]{2}\s*"/>\r
30     </xs:restriction>\r
31   </xs:simpleType>\r
32   <xs:simpleType name="BootModeNames">\r
33     <xs:restriction base="UCNameType">\r
34       <xs:enumeration value="FULL"/>\r
35       <xs:enumeration value="MINIMAL"/>\r
36       <xs:enumeration value="NO_CHANGE"/>\r
37       <xs:enumeration value="DIAGNOSTICS"/>\r
38       <xs:enumeration value="DEFAULT"/>\r
39       <xs:enumeration value="S2_RESUME"/>\r
40       <xs:enumeration value="S3_RESUME"/>\r
41       <xs:enumeration value="S4_RESUME"/>\r
42       <xs:enumeration value="S5_RESUME"/>\r
43       <xs:enumeration value="FLASH_UPDATE"/>\r
44       <xs:enumeration value="RECOVERY_FULL"/>\r
45       <xs:enumeration value="RECOVERY_MINIMAL"/>\r
46       <xs:enumeration value="RECOVERY_NO_CHANGE"/>\r
47       <xs:enumeration value="RECOVERY_DIAGNOSTICS"/>\r
48       <xs:enumeration value="RECOVERY_DEFAULT"/>\r
49       <xs:enumeration value="RECOVERY_S2_RESUME"/>\r
50       <xs:enumeration value="RECOVERY_S3_RESUME"/>\r
51       <xs:enumeration value="RECOVERY_S4_RESUME"/>\r
52       <xs:enumeration value="RECOVERY_S5_RESUME"/>\r
53       <xs:enumeration value="RECOVERY_FLASH_UPDATE"/>\r
54     </xs:restriction>\r
55   </xs:simpleType>\r
56   <xs:simpleType name="BootModeUsage">\r
57     <xs:restriction base="UsageTypes">\r
58       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
59       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
60       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
61       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
62     </xs:restriction>\r
63   </xs:simpleType>\r
64   <xs:simpleType name="BuildTargetList">\r
65     <xs:restriction base="BuildTargetUList">\r
66       <xs:minLength value="1"/>\r
67     </xs:restriction>\r
68   </xs:simpleType>\r
69   <xs:simpleType name="BuildTargetUList">\r
70     <xs:list itemType="BrUType"/>\r
71   </xs:simpleType>\r
72   <xs:simpleType name="BrUType">\r
73     <xs:union memberTypes="BrType UCNameType"/>\r
74   </xs:simpleType>\r
75   <xs:simpleType name="BrType">\r
76     <xs:restriction base="UCNameType">\r
77       <xs:enumeration value="DEBUG"/>\r
78       <xs:enumeration value="RELEASE"/>\r
79     </xs:restriction>\r
80   </xs:simpleType>\r
81   <xs:simpleType name="ComponentExecutionPhase">\r
82     <xs:restriction base="UCNameType">\r
83       <xs:enumeration value="MDE"/>\r
84       <xs:enumeration value="SEC"/>\r
85       <xs:enumeration value="PEI_CORE"/>\r
86       <xs:enumeration value="PEIM"/>\r
87       <xs:enumeration value="DXE_CORE"/>\r
88       <xs:enumeration value="DXE_DRIVER"/>\r
89       <xs:enumeration value="DXE_RUNTIME_DRIVER"/>\r
90       <xs:enumeration value="DXE_SAL_DRIVER"/>\r
91       <xs:enumeration value="DXE_SMM_DRIVER"/>\r
92       <xs:enumeration value="UEFI"/>\r
93       <xs:enumeration value="UEFI_APPLICATION"/>\r
94     </xs:restriction>\r
95   </xs:simpleType>\r
96   <xs:simpleType name="DataHubUsage">\r
97     <xs:restriction base="UsageTypes">\r
98       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
99       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
100       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
101       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
102       <xs:enumeration value="PRIVATE"/>\r
103     </xs:restriction>\r
104   </xs:simpleType>\r
105   <xs:simpleType name="DatumSizeLimitation">\r
106     <xs:restriction base="xs:nonNegativeInteger">\r
107       <xs:maxExclusive value="13777216"/>\r
108       <xs:pattern value="(\s)*[1-9][0-9]*(\s)*"/>\r
109     </xs:restriction>\r
110   </xs:simpleType>\r
111   <xs:simpleType name="DefaultValueType">\r
112     <xs:union memberTypes="xs:normalizedString Hex64BitDataType UnicodeString HexByteArrayType"/>\r
113   </xs:simpleType>\r
114   <xs:simpleType name="EfiSectionType">\r
115     <xs:restriction base="UCNameType">\r
116       <xs:enumeration value="EFI_SECTION_FREEFORM_SUBTYPE_GUID"/>\r
117       <xs:enumeration value="EFI_SECTION_VERSION"/>\r
118       <xs:enumeration value="EFI_SECTION_USER_INTERFACE"/>\r
119       <xs:enumeration value="EFI_SECTION_DXE_DEPEX"/>\r
120       <xs:enumeration value="EFI_SECTION_PEI_DEPEX"/>\r
121       <xs:enumeration value="EFI_SECTION_PE32"/>\r
122       <xs:enumeration value="EFI_SECTION_PIC"/>\r
123       <xs:enumeration value="EFI_SECTION_TE"/>\r
124       <xs:enumeration value="EFI_SECTION_RAW"/>\r
125       <xs:enumeration value="EFI_SECTION_COMPRESSION"/>\r
126       <xs:enumeration value="EFI_SECTION_GUID_DEFINED"/>\r
127       <xs:enumeration value="EFI_SECTION_COMPATIBILITY16"/>\r
128       <xs:enumeration value="EFI_SECTION_FIRMWARE_VOLUME_IMAGE"/>\r
129     </xs:restriction>\r
130   </xs:simpleType>\r
131   <xs:simpleType name="EventTypes">\r
132     <xs:restriction base="UCNameType">\r
133        <xs:enumeration value="EVENT_GROUP_GUID"/>\r
134       <xs:enumeration value="EVENT_TYPE_PERIODIC_TIMER"/>\r
135       <xs:enumeration value="EVENT_TYPE_RELATIVE_TIMER"/>\r
136     </xs:restriction>\r
137   </xs:simpleType>\r
138   <xs:simpleType name="EventUsage">\r
139     <xs:restriction base="UsageTypes">\r
140       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
141       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
142       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
143       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
144       <xs:enumeration value="PRIVATE"/>\r
145     </xs:restriction>\r
146   </xs:simpleType>\r
147   <xs:simpleType name="ExecutionType">\r
148     <xs:restriction base="UCNameType">\r
149       <xs:enumeration value="REL" id="Relocatable"/>\r
150       <xs:enumeration value="NREL" id="Non-Relocatable"/>\r
151       <xs:enumeration value="XIP" id="Execute_In_Place"/>\r
152       <xs:enumeration value="PIC" id="Position_Independent_Code"/>\r
153     </xs:restriction>\r
154   </xs:simpleType>\r
155   <xs:simpleType name="ExternType">\r
156     <xs:restriction base="xs:normalizedString">\r
157       <xs:minLength value="1"/>\r
158       <!--<xs:pattern value="((\w)+(\W)*(\s)*)+"/>-->\r
159     </xs:restriction>\r
160   </xs:simpleType>\r
161   <xs:simpleType name="ExternUsage">\r
162     <xs:restriction base="UsageTypes">\r
163       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
164       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
165     </xs:restriction>\r
166   </xs:simpleType>\r
167   <xs:simpleType name="FileNameUsage">\r
168     <xs:restriction base="UsageTypes">\r
169       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
170       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
171       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
172       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
173       <xs:enumeration value="PRIVATE"/>\r
174     </xs:restriction>\r
175   </xs:simpleType>\r
176   <xs:simpleType name="FeatureFlagExpressionType">\r
177     <xs:restriction base="xs:normalizedString">\r
178       <xs:minLength value="1"/>\r
179     </xs:restriction>\r
180   </xs:simpleType>\r
181   <xs:simpleType name="FrameworkComponentListType">\r
182     <xs:list itemType="FrameworkComponentTypes"/>\r
183   </xs:simpleType>\r
184   <xs:simpleType name="FrameworkComponentTypes">\r
185     <xs:restriction base="UCNameType">\r
186       <xs:enumeration value="APRIORI"/>\r
187       <xs:enumeration value="SEC"/>\r
188       <xs:enumeration value="LIBRARY"/>\r
189       <xs:enumeration value="FV_IMAGE_FILE"/>\r
190       <xs:enumeration value="BS_DRIVER"/>\r
191       <xs:enumeration value="RT_DRIVER"/>\r
192       <xs:enumeration value="SAL_RT_DRIVER"/>\r
193       <xs:enumeration value="PE32_PEIM"/>\r
194       <xs:enumeration value="PIC_PEIM"/>\r
195       <xs:enumeration value="COMBINED_PEIM_DRIVER"/>\r
196       <xs:enumeration value="PEI_CORE"/>\r
197       <xs:enumeration value="DXE_CORE"/>\r
198       <xs:enumeration value="BS_DRIVER_EFI"/>\r
199       <xs:enumeration value="SHELLAPP"/>\r
200       <xs:enumeration value="BINARY"/>\r
201       <xs:enumeration value="LOGO"/>\r
202       <xs:enumeration value="USER_DEFINED"/>\r
203     </xs:restriction>\r
204   </xs:simpleType>\r
205   <xs:simpleType name="FrameworkModuleTypes">\r
206     <xs:restriction base="ModuleTypeDef">\r
207       <xs:enumeration value="BASE"/>\r
208       <xs:enumeration value="SEC"/>\r
209       <xs:enumeration value="PEI_CORE"/>\r
210       <xs:enumeration value="PEIM"/>\r
211       <xs:enumeration value="DXE_CORE"/>\r
212       <xs:enumeration value="DXE_DRIVER"/>\r
213       <xs:enumeration value="DXE_RUNTIME_DRIVER"/>\r
214       <xs:enumeration value="DXE_SAL_DRIVER"/>\r
215       <xs:enumeration value="DXE_SMM_DRIVER"/>\r
216       <xs:enumeration value="UEFI_DRIVER"/>\r
217       <xs:enumeration value="UEFI_APPLICATION"/>\r
218       <xs:enumeration value="USER_DEFINED"/>\r
219     </xs:restriction>\r
220   </xs:simpleType>\r
221   <xs:simpleType name="FvRegionTypes">\r
222     <xs:restriction base="UCNameType">\r
223       <xs:enumeration value="FV_MAIN"/>\r
224       <xs:enumeration value="FV_MAIN_COMPACT"/>\r
225       <xs:enumeration value="NV_STORAGE"/>\r
226       <xs:enumeration value="FV_RECOVERY"/>\r
227       <xs:enumeration value="FV_RECOVERY_FLOPPY"/>\r
228       <xs:enumeration value="FV_FILE"/>\r
229       <xs:enumeration value="CAPSULE_CARGO"/>\r
230       <xs:enumeration value="NULL"/>\r
231       <xs:enumeration value="USER_DEFINED"/>\r
232     </xs:restriction>\r
233   </xs:simpleType>\r
234   <xs:simpleType name="PrimaryGuidListType">\r
235     <xs:list itemType="GuidTypes"/>\r
236   </xs:simpleType>\r
237   <xs:simpleType name="GuidListType">\r
238     <xs:restriction base="PrimaryGuidListType">\r
239       <xs:minLength value="1"/>\r
240     </xs:restriction>\r
241   </xs:simpleType>\r
242   <xs:simpleType name="GuidTypes">\r
243     <xs:restriction base="UCNameType">\r
244       <xs:enumeration value="DATA_HUB_RECORD"/>\r
245       <xs:enumeration value="EFI_EVENT"/>\r
246       <xs:enumeration value="EFI_SYSTEM_CONFIGURATION_TABLE"/>\r
247       <xs:enumeration value="EFI_VARIABLE"/>\r
248       <xs:enumeration value="GUID"/>\r
249       <xs:enumeration value="HII_PACKAGE_LIST"/>\r
250       <xs:enumeration value="HOB"/>\r
251       <xs:enumeration value="TOKEN_SPACE_GUID"/>\r
252     </xs:restriction>\r
253   </xs:simpleType>\r
254   <xs:simpleType name="GuidUsage">\r
255     <xs:restriction base="UsageTypes">\r
256       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
257       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
258       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
259       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
260       <xs:enumeration value="PRIVATE"/>\r
261     </xs:restriction>\r
262   </xs:simpleType>\r
263   <xs:simpleType name="HexByteArrayListType">\r
264     <xs:restriction base="xs:normalizedString">\r
265       <xs:minLength value="4"/>\r
266       <xs:pattern value="\s*((( )?0x[a-fA-F0-9]{2})(,)?)+( )?"/>\r
267     </xs:restriction>\r
268   </xs:simpleType>\r
269   <xs:simpleType name="HexByteArrayType">\r
270     <xs:restriction base="xs:normalizedString">\r
271       <xs:minLength value="4"/>\r
272       <xs:pattern value="((\s)*0x([a-fA-F0-9]){2}(,)?(\s)*)+"/>\r
273     </xs:restriction>\r
274   </xs:simpleType>\r
275   <xs:simpleType name="HexWordArrayType">\r
276     <xs:restriction base="xs:normalizedString">\r
277       <xs:minLength value="6"/>\r
278       <xs:pattern value="((\s)*0x([a-fA-F0-9]){4}(,)?(\s)*)+"/>\r
279     </xs:restriction>\r
280   </xs:simpleType>\r
281   <xs:simpleType name="HiiPackageUsage">\r
282     <xs:restriction base="UsageTypes">\r
283       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
284       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
285       <xs:enumeration value="PRIVATE"/>\r
286     </xs:restriction>\r
287   </xs:simpleType>\r
288   <xs:simpleType name="HobTypes">\r
289     <xs:restriction base="UCNameType">\r
290       <xs:enumeration value="PHIT"/>\r
291       <xs:enumeration value="MEMORY_ALLOCATION"/>\r
292       <xs:enumeration value="RESOURCE_DESCRIPTOR"/>\r
293       <xs:enumeration value="GUID_EXTENSION"/>\r
294       <xs:enumeration value="FIRMWARE_VOLUME"/>\r
295       <xs:enumeration value="CPU"/>\r
296       <xs:enumeration value="POOL"/>\r
297       <xs:enumeration value="CAPSULE_VOLUME"/>\r
298     </xs:restriction>\r
299   </xs:simpleType>\r
300   <xs:simpleType name="HobUsage">\r
301     <xs:restriction base="UsageTypes">\r
302       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
303       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
304       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
305       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
306       <xs:enumeration value="PRIVATE"/>\r
307     </xs:restriction>\r
308   </xs:simpleType>\r
309   <xs:simpleType name="IntermediateOutputType">\r
310     <xs:restriction base="UCNameType">\r
311       <xs:enumeration value="MODULE"/>\r
312       <xs:enumeration value="UNIFIED"/>\r
313     </xs:restriction>\r
314   </xs:simpleType>\r
315   <xs:simpleType name="LibraryUsage">\r
316     <xs:restriction base="UsageTypes">\r
317       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
318       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
319       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
320       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
321       <xs:enumeration value="PRIVATE"/>\r
322     </xs:restriction>\r
323   </xs:simpleType>\r
324   <xs:simpleType name="ModuleTypeDef">\r
325     <xs:restriction base="UCNameType">\r
326       <xs:enumeration value="BASE"/>\r
327       <xs:enumeration value="SEC"/>\r
328       <xs:enumeration value="PEI_CORE"/>\r
329       <xs:enumeration value="PEIM"/>\r
330       <xs:enumeration value="DXE_CORE"/>\r
331       <xs:enumeration value="DXE_DRIVER"/>\r
332       <xs:enumeration value="DXE_RUNTIME_DRIVER"/>\r
333       <xs:enumeration value="DXE_SAL_DRIVER"/>\r
334       <xs:enumeration value="DXE_SMM_DRIVER"/>\r
335       <xs:enumeration value="TOOL"/>\r
336       <xs:enumeration value="UEFI_DRIVER"/>\r
337       <xs:enumeration value="UEFI_APPLICATION"/>\r
338       <xs:enumeration value="USER_DEFINED"/>\r
339     </xs:restriction>\r
340   </xs:simpleType>\r
341   <xs:simpleType name="Md5sumType">\r
342     <xs:restriction base="xs:normalizedString">\r
343       <xs:pattern value="\s*[a-fA-F0-9]{32}\s*"/>\r
344     </xs:restriction>\r
345   </xs:simpleType>\r
346   <xs:simpleType name="PrimaryModuleListType">\r
347     <xs:list itemType="FrameworkModuleTypes"/>\r
348   </xs:simpleType>\r
349   <xs:simpleType name="ModuleListType">\r
350     <xs:restriction base="PrimaryModuleListType">\r
351       <xs:minLength value="1"/>\r
352     </xs:restriction>\r
353   </xs:simpleType>\r
354   <xs:simpleType name="PackageType">\r
355     <xs:restriction base="UCNameType">\r
356       <xs:enumeration value="SOURCE"/>\r
357       <xs:enumeration value="BINARY"/>\r
358       <xs:enumeration value="MIXED"/>\r
359     </xs:restriction>\r
360   </xs:simpleType>\r
361   <xs:simpleType name="PackageUsage">\r
362     <xs:restriction base="UsageTypes">\r
363       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
364       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
365     </xs:restriction>\r
366   </xs:simpleType>\r
367   <xs:simpleType name="PcdListType">\r
368     <xs:restriction base="PrimaryPcdListType">\r
369       <xs:minLength value="1"/>\r
370     </xs:restriction>\r
371   </xs:simpleType>\r
372   <xs:simpleType name="PrimaryPcdListType">\r
373     <xs:list itemType="PcdItemTypes"/>\r
374   </xs:simpleType>\r
375   <xs:simpleType name="PcdTypes">\r
376     <xs:restriction base="UCNameType">\r
377       <xs:enumeration value="FIXED_AT_BUILD"/>\r
378       <xs:enumeration value="FEATURE_FLAG"/>\r
379       <xs:enumeration value="PATCHABLE_IN_MODULE"/>\r
380       <xs:enumeration value="DYNAMIC"/>\r
381       <xs:enumeration value="DYNAMIC_EX"/>\r
382     </xs:restriction>\r
383   </xs:simpleType>\r
384   <xs:simpleType name="PcdDriverTypes">\r
385     <xs:restriction base="UCNameType">\r
386       <xs:enumeration value="PEI_PCD_DRIVER"/>\r
387       <xs:enumeration value="DXE_PCD_DRIVER"/>\r
388     </xs:restriction>\r
389   </xs:simpleType>\r
390   <xs:simpleType name="PcdDataTypes">\r
391     <xs:restriction base="xs:normalizedString">\r
392       <xs:enumeration value="UINT8"/>\r
393       <xs:enumeration value="UINT16"/>\r
394       <xs:enumeration value="UINT32"/>\r
395       <xs:enumeration value="UINT64"/>\r
396       <xs:enumeration value="VOID*"/>\r
397       <xs:enumeration value="BOOLEAN"/>\r
398     </xs:restriction>\r
399   </xs:simpleType>\r
400   <xs:simpleType name="PcdFeatureFlagUsage">\r
401     <xs:restriction base="UsageTypes">\r
402       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
403     </xs:restriction>\r
404   </xs:simpleType>\r
405   <xs:simpleType name="PcdItemTypes">\r
406     <xs:restriction base="UCNameType">\r
407       <xs:enumeration value="FEATURE_FLAG"/>\r
408       <xs:enumeration value="FIXED_AT_BUILD"/>\r
409       <xs:enumeration value="PATCHABLE_IN_MODULE"/>\r
410       <xs:enumeration value="DYNAMIC"/>\r
411       <xs:enumeration value="DYNAMIC_EX"/>\r
412     </xs:restriction>\r
413   </xs:simpleType>\r
414   <xs:simpleType name="PcdUsage">\r
415     <xs:restriction base="UsageTypes">\r
416       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
417       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
418       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
419       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
420     </xs:restriction>\r
421   </xs:simpleType>\r
422   <xs:simpleType name="PpiNotifyUsage">\r
423     <xs:restriction base="UsageTypes">\r
424       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
425     </xs:restriction>\r
426   </xs:simpleType>\r
427   <xs:simpleType name="PpiUsage">\r
428     <xs:restriction base="UsageTypes">\r
429       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
430       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
431       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
432       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
433       <xs:enumeration value="PRIVATE"/>\r
434     </xs:restriction>\r
435   </xs:simpleType>\r
436   <xs:simpleType name="ProtocolNotifyUsage">\r
437     <xs:restriction base="UsageTypes">\r
438       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
439     </xs:restriction>\r
440   </xs:simpleType>\r
441   <xs:simpleType name="ProtocolUsage">\r
442     <xs:restriction base="UsageTypes">\r
443       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
444       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
445       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
446       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
447       <xs:enumeration value="TO_START"/>\r
448       <xs:enumeration value="BY_START"/>\r
449       <xs:enumeration value="PRIVATE"/>\r
450     </xs:restriction>\r
451   </xs:simpleType>\r
452   <xs:simpleType name="SkuListType">\r
453     <xs:restriction base="xs:normalizedString">\r
454       <xs:minLength value="1"/>\r
455       <xs:pattern value="\s*(\d)+((,)?(\s)*(\d)+)*"/>\r
456     </xs:restriction>\r
457   </xs:simpleType>\r
458   <xs:simpleType name="SupportedArchitectures">\r
459     <xs:restriction base="UCNameType">\r
460       <xs:enumeration value="EBC"/>\r
461       <xs:enumeration value="IA32"/>\r
462       <xs:enumeration value="X64"/>\r
463       <xs:enumeration value="IPF"/>\r
464       <xs:enumeration value="ARM"/>\r
465       <xs:enumeration value="PPC"/>\r
466     </xs:restriction>\r
467   </xs:simpleType>\r
468   <xs:simpleType name="SystemTableUsage">\r
469     <xs:restriction base="UsageTypes">\r
470       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
471       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
472       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
473       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
474       <xs:enumeration value="PRIVATE"/>\r
475     </xs:restriction>\r
476   </xs:simpleType>\r
477   <xs:simpleType name="TokenDataType">\r
478     <xs:union memberTypes="HexDoubleWordDataType  xs:nonNegativeInteger"/>\r
479   </xs:simpleType>\r
480   <xs:simpleType name="ToolChains">\r
481     <xs:restriction base="UCNameType">\r
482       <xs:minLength value="2"/>\r
483       <xs:enumeration value="MSFT"/>\r
484       <xs:enumeration value="INTEL"/>\r
485       <xs:enumeration value="GCC"/>\r
486       <xs:enumeration value="CYGWIN"/>\r
487     </xs:restriction>\r
488   </xs:simpleType>\r
489   <xs:simpleType name="UiNameType">\r
490     <xs:restriction base="xs:string">\r
491       <xs:minLength value="1"/>\r
492       <xs:pattern value="[^ ].*"/>\r
493     </xs:restriction>\r
494   </xs:simpleType>\r
495   <xs:simpleType name="UnicodeString">\r
496     <xs:restriction base="xs:normalizedString">\r
497       <xs:minLength value="3"/>\r
498       <xs:pattern value="(\s)*L(\:)?&quot;[^&quot;]*&quot;(\s)*"/>\r
499     </xs:restriction>\r
500   </xs:simpleType>\r
501   <xs:simpleType name="UsageListType">\r
502     <xs:restriction base="PrimaryUsageList">\r
503       <xs:minLength value="1"/>\r
504     </xs:restriction>\r
505   </xs:simpleType>\r
506   <xs:simpleType name="PrimaryUsageList">\r
507     <xs:list itemType="UsageTypes"/>\r
508   </xs:simpleType>\r
509   <!-- UsageTypes describes all of the Usage Attributes that are defined in the Module Surface Area Specification -->\r
510   <xs:simpleType name="UsageTypes">\r
511     <xs:restriction base="UCNameType">\r
512       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
513       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
514       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
515       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
516       <xs:enumeration value="TO_START"/>\r
517       <xs:enumeration value="BY_START"/>\r
518       <xs:enumeration value="PRIVATE"/>\r
519     </xs:restriction>\r
520   </xs:simpleType>\r
521   <xs:simpleType name="VariableOffsetValues">\r
522     <xs:restriction base="xs:string">\r
523       <xs:minLength value="1"/>\r
524       <xs:pattern value="\s*\d+(:)?\d*\s*"/>\r
525     </xs:restriction>\r
526   </xs:simpleType>\r
527   <xs:simpleType name="VariableUsage">\r
528     <xs:restriction base="UsageTypes">\r
529       <!-- Module requires the variable entry to be set -->\r
530       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
531       <!-- Module will use the variable entry if it's set -->\r
532       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
533       <!-- Module Always will write the variable -->\r
534       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
535       <!-- Module sometimes writes the variable -->\r
536       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
537       <!-- Variable is produced and consumed only by this module -->\r
538       <xs:enumeration value="PRIVATE"/>\r
539     </xs:restriction>\r
540   </xs:simpleType>\r
541   <!-- Complex Data Types -->\r
542   <xs:complexType name="DbPathAndFilename">\r
543     <xs:simpleContent>\r
544       <xs:extension base="PathAndFilename">\r
545         <xs:attribute name="FarGuid" type="GuidType" use="optional"/>\r
546         <xs:attribute name="Md5sum" type="Md5sumType"/>\r
547       </xs:extension>\r
548     </xs:simpleContent>\r
549   </xs:complexType>\r
550   <xs:complexType name="ArgsType">\r
551     <xs:sequence minOccurs="0" maxOccurs="unbounded">\r
552       <xs:element name="Arg" type="xs:string"/>\r
553     </xs:sequence>\r
554   </xs:complexType>\r
555   <xs:complexType name="ToolType">\r
556     <xs:sequence>\r
557       <xs:element name="ToolName" type="xs:string"/>\r
558       <xs:element name="ToolArgs" type="xs:string"/>\r
559     </xs:sequence>\r
560   </xs:complexType>\r
561 </xs:schema>\r