Removed DEFAULT Usage type - it is not valid, and should have been removed a while...
[people/mcb30/edk2.git] / edk2 / Tools / 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="BLOCK[A-F0-9]{2}"/>\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:minExclusive value="0"/>\r
108       <xs:maxExclusive value="13777216"/>\r
109       <xs:pattern value="(\s)*[1-9][0-9]*(\s)*"/>\r
110     </xs:restriction>\r
111   </xs:simpleType>\r
112   <xs:simpleType name="DefaultValueType">\r
113     <xs:union memberTypes="xs:normalizedString Hex64BitDataType UnicodeString HexByteArrayType"/>\r
114   </xs:simpleType>\r
115   <xs:simpleType name="EfiSectionType">\r
116     <xs:restriction base="UCNameType">\r
117       <xs:enumeration value="EFI_SECTION_FREEFORM_SUBTYPE_GUID"/>\r
118       <xs:enumeration value="EFI_SECTION_VERSION"/>\r
119       <xs:enumeration value="EFI_SECTION_USER_INTERFACE"/>\r
120       <xs:enumeration value="EFI_SECTION_DXE_DEPEX"/>\r
121       <xs:enumeration value="EFI_SECTION_PEI_DEPEX"/>\r
122       <xs:enumeration value="EFI_SECTION_PE32"/>\r
123       <xs:enumeration value="EFI_SECTION_PIC"/>\r
124       <xs:enumeration value="EFI_SECTION_TE"/>\r
125       <xs:enumeration value="EFI_SECTION_RAW"/>\r
126       <xs:enumeration value="EFI_SECTION_COMPRESSION"/>\r
127       <xs:enumeration value="EFI_SECTION_GUID_DEFINED"/>\r
128       <xs:enumeration value="EFI_SECTION_COMPATIBILITY16"/>\r
129       <xs:enumeration value="EFI_SECTION_FIRMWARE_VOLUME_IMAGE"/>\r
130     </xs:restriction>\r
131   </xs:simpleType>\r
132   <xs:simpleType name="EventTypes">\r
133     <xs:restriction base="UCNameType">\r
134        <xs:enumeration value="EVENT_GROUP_GUID"/>\r
135       <xs:enumeration value="EVENT_TYPE_PERIODIC_TIMER"/>\r
136       <xs:enumeration value="EVENT_TYPE_RELATIVE_TIMER"/>\r
137     </xs:restriction>\r
138   </xs:simpleType>\r
139   <xs:simpleType name="EventUsage">\r
140     <xs:restriction base="UsageTypes">\r
141       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
142       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
143       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
144       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
145       <xs:enumeration value="PRIVATE"/>\r
146     </xs:restriction>\r
147   </xs:simpleType>\r
148   <xs:simpleType name="ExecutionType">\r
149     <xs:restriction base="UCNameType">\r
150       <xs:enumeration value="REL" id="Relocatable"/>\r
151       <xs:enumeration value="NREL" id="Non-Relocatable"/>\r
152       <xs:enumeration value="XIP" id="Execute_In_Place"/>\r
153       <xs:enumeration value="PIC" id="Position_Independent_Code"/>\r
154     </xs:restriction>\r
155   </xs:simpleType>\r
156   <xs:simpleType name="ExternType">\r
157     <xs:restriction base="xs:normalizedString">\r
158       <xs:minLength value="1"/>\r
159       <!--<xs:pattern value="((\w)+(\W)*(\s)*)+"/>-->\r
160     </xs:restriction>\r
161   </xs:simpleType>\r
162   <xs:simpleType name="ExternUsage">\r
163     <xs:restriction base="UsageTypes">\r
164       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
165       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
166     </xs:restriction>\r
167   </xs:simpleType>\r
168   <xs:simpleType name="FileNameUsage">\r
169     <xs:restriction base="UsageTypes">\r
170       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
171       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
172       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
173       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
174       <xs:enumeration value="PRIVATE"/>\r
175     </xs:restriction>\r
176   </xs:simpleType>\r
177   <xs:simpleType name="FeatureFlagExpressionType">\r
178     <xs:restriction base="xs:normalizedString">\r
179       <xs:minLength value="1"/>\r
180     </xs:restriction>\r
181   </xs:simpleType>\r
182   <xs:simpleType name="FrameworkComponentListType">\r
183     <xs:list itemType="FrameworkComponentTypes"/>\r
184   </xs:simpleType>\r
185   <xs:simpleType name="FrameworkComponentTypes">\r
186     <xs:restriction base="UCNameType">\r
187       <xs:enumeration value="APRIORI"/>\r
188       <xs:enumeration value="SEC"/>\r
189       <xs:enumeration value="LIBRARY"/>\r
190       <xs:enumeration value="FV_IMAGE_FILE"/>\r
191       <xs:enumeration value="BS_DRIVER"/>\r
192       <xs:enumeration value="RT_DRIVER"/>\r
193       <xs:enumeration value="SAL_RT_DRIVER"/>\r
194       <xs:enumeration value="PE32_PEIM"/>\r
195       <xs:enumeration value="PIC_PEIM"/>\r
196       <xs:enumeration value="COMBINED_PEIM_DRIVER"/>\r
197       <xs:enumeration value="PEI_CORE"/>\r
198       <xs:enumeration value="DXE_CORE"/>\r
199       <xs:enumeration value="BS_DRIVER_EFI"/>\r
200       <xs:enumeration value="SHELLAPP"/>\r
201       <xs:enumeration value="BINARY"/>\r
202       <xs:enumeration value="LOGO"/>\r
203       <xs:enumeration value="USER_DEFINED"/>\r
204     </xs:restriction>\r
205   </xs:simpleType>\r
206   <xs:simpleType name="FrameworkModuleTypes">\r
207     <xs:restriction base="ModuleTypeDef">\r
208       <xs:enumeration value="BASE"/>\r
209       <xs:enumeration value="SEC"/>\r
210       <xs:enumeration value="PEI_CORE"/>\r
211       <xs:enumeration value="PEIM"/>\r
212       <xs:enumeration value="DXE_CORE"/>\r
213       <xs:enumeration value="DXE_DRIVER"/>\r
214       <xs:enumeration value="DXE_RUNTIME_DRIVER"/>\r
215       <xs:enumeration value="DXE_SAL_DRIVER"/>\r
216       <xs:enumeration value="DXE_SMM_DRIVER"/>\r
217       <xs:enumeration value="UEFI_DRIVER"/>\r
218       <xs:enumeration value="UEFI_APPLICATION"/>\r
219       <xs:enumeration value="USER_DEFINED"/>\r
220     </xs:restriction>\r
221   </xs:simpleType>\r
222   <xs:simpleType name="FvRegionTypes">\r
223     <xs:restriction base="UCNameType">\r
224       <xs:enumeration value="FV_MAIN"/>\r
225       <xs:enumeration value="FV_MAIN_COMPACT"/>\r
226       <xs:enumeration value="NV_STORAGE"/>\r
227       <xs:enumeration value="FV_RECOVERY"/>\r
228       <xs:enumeration value="FV_RECOVERY_FLOPPY"/>\r
229       <xs:enumeration value="FV_FILE"/>\r
230       <xs:enumeration value="CAPSULE_CARGO"/>\r
231       <xs:enumeration value="NULL"/>\r
232       <xs:enumeration value="USER_DEFINED"/>\r
233     </xs:restriction>\r
234   </xs:simpleType>\r
235   <xs:simpleType name="PrimaryGuidListType">\r
236     <xs:list itemType="GuidTypes"/>\r
237   </xs:simpleType>\r
238   <xs:simpleType name="GuidListType">\r
239     <xs:restriction base="PrimaryGuidListType">\r
240       <xs:minLength value="1"/>\r
241     </xs:restriction>\r
242   </xs:simpleType>\r
243   <xs:simpleType name="GuidTypes">\r
244     <xs:restriction base="UCNameType">\r
245       <xs:enumeration value="DATA_HUB_RECORD"/>\r
246       <xs:enumeration value="EFI_EVENT"/>\r
247       <xs:enumeration value="EFI_SYSTEM_CONFIGURATION_TABLE"/>\r
248       <xs:enumeration value="EFI_VARIABLE"/>\r
249       <xs:enumeration value="GUID"/>\r
250       <xs:enumeration value="HII_PACKAGE_LIST"/>\r
251       <xs:enumeration value="HOB"/>\r
252       <xs:enumeration value="TOKEN_SPACE_GUID"/>\r
253     </xs:restriction>\r
254   </xs:simpleType>\r
255   <xs:simpleType name="GuidUsage">\r
256     <xs:restriction base="UsageTypes">\r
257       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
258       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
259       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
260       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
261       <xs:enumeration value="PRIVATE"/>\r
262     </xs:restriction>\r
263   </xs:simpleType>\r
264   <xs:simpleType name="HexByteArrayListType">\r
265     <xs:restriction base="xs:normalizedString">\r
266       <xs:minLength value="4"/>\r
267       <xs:pattern value="((( )?0x[a-fA-F0-9]{2})(,)?)+( )?"/>\r
268     </xs:restriction>\r
269   </xs:simpleType>\r
270   <xs:simpleType name="HexByteArrayType">\r
271     <xs:restriction base="xs:normalizedString">\r
272       <xs:minLength value="4"/>\r
273       <xs:pattern value="((\s)*0x([a-fA-F0-9]){2}(,)?(\s)*)+"/>\r
274     </xs:restriction>\r
275   </xs:simpleType>\r
276   <xs:simpleType name="HexWordArrayType">\r
277     <xs:restriction base="xs:normalizedString">\r
278       <xs:minLength value="6"/>\r
279       <xs:pattern value="((\s)*0x([a-fA-F0-9]){4}(,)?(\s)*)+"/>\r
280     </xs:restriction>\r
281   </xs:simpleType>\r
282   <xs:simpleType name="HiiPackageUsage">\r
283     <xs:restriction base="UsageTypes">\r
284       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
285       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
286       <xs:enumeration value="PRIVATE"/>\r
287     </xs:restriction>\r
288   </xs:simpleType>\r
289   <xs:simpleType name="HobTypes">\r
290     <xs:restriction base="UCNameType">\r
291       <xs:enumeration value="PHIT"/>\r
292       <xs:enumeration value="MEMORY_ALLOCATION"/>\r
293       <xs:enumeration value="RESOURCE_DESCRIPTOR"/>\r
294       <xs:enumeration value="GUID_EXTENSION"/>\r
295       <xs:enumeration value="FIRMWARE_VOLUME"/>\r
296       <xs:enumeration value="CPU"/>\r
297       <xs:enumeration value="POOL"/>\r
298       <xs:enumeration value="CAPSULE_VOLUME"/>\r
299     </xs:restriction>\r
300   </xs:simpleType>\r
301   <xs:simpleType name="HobUsage">\r
302     <xs:restriction base="UsageTypes">\r
303       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
304       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
305       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
306       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
307       <xs:enumeration value="PRIVATE"/>\r
308     </xs:restriction>\r
309   </xs:simpleType>\r
310   <xs:simpleType name="IntermediateOutputType">\r
311     <xs:restriction base="UCNameType">\r
312       <xs:enumeration value="MODULE"/>\r
313       <xs:enumeration value="UNIFIED"/>\r
314     </xs:restriction>\r
315   </xs:simpleType>\r
316   <xs:simpleType name="LibraryUsage">\r
317     <xs:restriction base="UsageTypes">\r
318       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
319       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
320       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
321       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
322       <xs:enumeration value="PRIVATE"/>\r
323     </xs:restriction>\r
324   </xs:simpleType>\r
325   <xs:simpleType name="ModuleTypeDef">\r
326     <xs:restriction base="UCNameType">\r
327       <xs:enumeration value="BASE"/>\r
328       <xs:enumeration value="SEC"/>\r
329       <xs:enumeration value="PEI_CORE"/>\r
330       <xs:enumeration value="PEIM"/>\r
331       <xs:enumeration value="DXE_CORE"/>\r
332       <xs:enumeration value="DXE_DRIVER"/>\r
333       <xs:enumeration value="DXE_RUNTIME_DRIVER"/>\r
334       <xs:enumeration value="DXE_SAL_DRIVER"/>\r
335       <xs:enumeration value="DXE_SMM_DRIVER"/>\r
336       <xs:enumeration value="TOOL"/>\r
337       <xs:enumeration value="UEFI_DRIVER"/>\r
338       <xs:enumeration value="UEFI_APPLICATION"/>\r
339       <xs:enumeration value="USER_DEFINED"/>\r
340     </xs:restriction>\r
341   </xs:simpleType>\r
342   <xs:simpleType name="Md5sumType">\r
343     <xs:restriction base="xs:normalizedString">\r
344       <xs:pattern value="[a-fA-F0-9]{32}"/>\r
345     </xs:restriction>\r
346   </xs:simpleType>\r
347   <xs:simpleType name="PrimaryModuleListType">\r
348     <xs:list itemType="FrameworkModuleTypes"/>\r
349   </xs:simpleType>\r
350   <xs:simpleType name="ModuleListType">\r
351     <xs:restriction base="PrimaryModuleListType">\r
352       <xs:minLength value="1"/>\r
353     </xs:restriction>\r
354   </xs:simpleType>\r
355   <xs:simpleType name="PackageType">\r
356     <xs:restriction base="UCNameType">\r
357       <xs:enumeration value="SOURCE"/>\r
358       <xs:enumeration value="BINARY"/>\r
359       <xs:enumeration value="MIXED"/>\r
360     </xs:restriction>\r
361   </xs:simpleType>\r
362   <xs:simpleType name="PackageUsage">\r
363     <xs:restriction base="UsageTypes">\r
364       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
365       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
366     </xs:restriction>\r
367   </xs:simpleType>\r
368   <xs:simpleType name="PcdListType">\r
369     <xs:restriction base="PrimaryPcdListType">\r
370       <xs:minLength value="1"/>\r
371     </xs:restriction>\r
372   </xs:simpleType>\r
373   <xs:simpleType name="PrimaryPcdListType">\r
374     <xs:list itemType="PcdItemTypes"/>\r
375   </xs:simpleType>\r
376   <xs:simpleType name="PcdTypes">\r
377     <xs:restriction base="UCNameType">\r
378       <xs:enumeration value="FIXED_AT_BUILD"/>\r
379       <xs:enumeration value="FEATURE_FLAG"/>\r
380       <xs:enumeration value="PATCHABLE_IN_MODULE"/>\r
381       <xs:enumeration value="DYNAMIC"/>\r
382       <xs:enumeration value="DYNAMIC_EX"/>\r
383     </xs:restriction>\r
384   </xs:simpleType>\r
385   <xs:simpleType name="PcdDriverTypes">\r
386     <xs:restriction base="UCNameType">\r
387       <xs:enumeration value="PEI_PCD_DRIVER"/>\r
388       <xs:enumeration value="DXE_PCD_DRIVER"/>\r
389     </xs:restriction>\r
390   </xs:simpleType>\r
391   <xs:simpleType name="PcdDataTypes">\r
392     <xs:restriction base="xs:normalizedString">\r
393       <xs:enumeration value="UINT8"/>\r
394       <xs:enumeration value="UINT16"/>\r
395       <xs:enumeration value="UINT32"/>\r
396       <xs:enumeration value="UINT64"/>\r
397       <xs:enumeration value="VOID*"/>\r
398       <xs:enumeration value="BOOLEAN"/>\r
399     </xs:restriction>\r
400   </xs:simpleType>\r
401   <xs:simpleType name="PcdFeatureFlagUsage">\r
402     <xs:restriction base="UsageTypes">\r
403       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
404     </xs:restriction>\r
405   </xs:simpleType>\r
406   <xs:simpleType name="PcdItemTypes">\r
407     <xs:restriction base="UCNameType">\r
408       <xs:enumeration value="FEATURE_FLAG"/>\r
409       <xs:enumeration value="FIXED_AT_BUILD"/>\r
410       <xs:enumeration value="PATCHABLE_IN_MODULE"/>\r
411       <xs:enumeration value="DYNAMIC"/>\r
412       <xs:enumeration value="DYNAMIC_EX"/>\r
413     </xs:restriction>\r
414   </xs:simpleType>\r
415   <xs:simpleType name="PcdUsage">\r
416     <xs:restriction base="UsageTypes">\r
417       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
418       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
419       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
420       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
421     </xs:restriction>\r
422   </xs:simpleType>\r
423   <xs:simpleType name="PpiNotifyUsage">\r
424     <xs:restriction base="UsageTypes">\r
425       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
426     </xs:restriction>\r
427   </xs:simpleType>\r
428   <xs:simpleType name="PpiUsage">\r
429     <xs:restriction base="UsageTypes">\r
430       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
431       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
432       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
433       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
434       <xs:enumeration value="PRIVATE"/>\r
435     </xs:restriction>\r
436   </xs:simpleType>\r
437   <xs:simpleType name="ProtocolNotifyUsage">\r
438     <xs:restriction base="UsageTypes">\r
439       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
440     </xs:restriction>\r
441   </xs:simpleType>\r
442   <xs:simpleType name="ProtocolUsage">\r
443     <xs:restriction base="UsageTypes">\r
444       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
445       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
446       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
447       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
448       <xs:enumeration value="TO_START"/>\r
449       <xs:enumeration value="BY_START"/>\r
450       <xs:enumeration value="PRIVATE"/>\r
451     </xs:restriction>\r
452   </xs:simpleType>\r
453   <xs:simpleType name="SkuListType">\r
454     <xs:restriction base="xs:normalizedString">\r
455       <xs:minLength value="1"/>\r
456       <xs:pattern value="(\d)+((,)?(\s)*(\d)+)*"/>\r
457     </xs:restriction>\r
458   </xs:simpleType>\r
459   <xs:simpleType name="SupportedArchitectures">\r
460     <xs:restriction base="UCNameType">\r
461       <xs:enumeration value="EBC"/>\r
462       <xs:enumeration value="IA32"/>\r
463       <xs:enumeration value="X64"/>\r
464       <xs:enumeration value="IPF"/>\r
465       <xs:enumeration value="ARM"/>\r
466       <xs:enumeration value="PPC"/>\r
467     </xs:restriction>\r
468   </xs:simpleType>\r
469   <xs:simpleType name="SystemTableUsage">\r
470     <xs:restriction base="UsageTypes">\r
471       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
472       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
473       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
474       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
475       <xs:enumeration value="PRIVATE"/>\r
476     </xs:restriction>\r
477   </xs:simpleType>\r
478   <xs:simpleType name="TokenDataType">\r
479     <xs:union memberTypes="HexDoubleWordDataType  xs:nonNegativeInteger"/>\r
480   </xs:simpleType>\r
481   <xs:simpleType name="ToolChains">\r
482     <xs:restriction base="UCNameType">\r
483       <xs:minLength value="2"/>\r
484       <xs:enumeration value="MSFT"/>\r
485       <xs:enumeration value="INTEL"/>\r
486       <xs:enumeration value="GCC"/>\r
487       <xs:enumeration value="CYGWIN"/>\r
488     </xs:restriction>\r
489   </xs:simpleType>\r
490   <xs:simpleType name="UiNameType">\r
491     <xs:restriction base="xs:string">\r
492       <xs:minLength value="1"/>\r
493       <xs:pattern value="[^ ].*"/>\r
494     </xs:restriction>\r
495   </xs:simpleType>\r
496   <xs:simpleType name="UnicodeString">\r
497     <xs:restriction base="xs:normalizedString">\r
498       <xs:minLength value="3"/>\r
499       <xs:pattern value="(\s)*L(\:)?&quot;[^&quot;]*&quot;(\s)*"/>\r
500     </xs:restriction>\r
501   </xs:simpleType>\r
502   <xs:simpleType name="UsageListType">\r
503     <xs:restriction base="PrimaryUsageList">\r
504       <xs:minLength value="1"/>\r
505     </xs:restriction>\r
506   </xs:simpleType>\r
507   <xs:simpleType name="PrimaryUsageList">\r
508     <xs:list itemType="UsageTypes"/>\r
509   </xs:simpleType>\r
510   <!-- UsageTypes describes all of the Usage Attributes that are defined in the Module Surface Area Specification -->\r
511   <xs:simpleType name="UsageTypes">\r
512     <xs:restriction base="UCNameType">\r
513       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
514       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
515       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
516       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
517       <xs:enumeration value="TO_START"/>\r
518       <xs:enumeration value="BY_START"/>\r
519       <xs:enumeration value="PRIVATE"/>\r
520     </xs:restriction>\r
521   </xs:simpleType>\r
522   <xs:simpleType name="VariableOffsetValues">\r
523     <xs:restriction base="xs:string">\r
524       <xs:minLength value="1"/>\r
525       <xs:pattern value="\d+(:)?\d*"/>\r
526     </xs:restriction>\r
527   </xs:simpleType>\r
528   <xs:simpleType name="VariableUsage">\r
529     <xs:restriction base="UsageTypes">\r
530       <!-- Module requires the variable entry to be set -->\r
531       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
532       <!-- Module will use the variable entry if it's set -->\r
533       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
534       <!-- Module Always will write the variable -->\r
535       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
536       <!-- Module sometimes writes the variable -->\r
537       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
538       <!-- Variable is produced and consumed only by this module -->\r
539       <xs:enumeration value="PRIVATE"/>\r
540     </xs:restriction>\r
541   </xs:simpleType>\r
542   <!-- Complex Data Types -->\r
543   <xs:complexType name="DbPathAndFilename">\r
544     <xs:simpleContent>\r
545       <xs:extension base="PathAndFilename">\r
546         <xs:attribute name="FarGuid" type="GuidType" use="optional"/>\r
547         <xs:attribute name="Md5sum" type="Md5sumType"/>\r
548       </xs:extension>\r
549     </xs:simpleContent>\r
550   </xs:complexType>\r
551   <xs:complexType name="ArgsType">\r
552     <xs:sequence minOccurs="0" maxOccurs="unbounded">\r
553       <xs:element name="Arg" type="xs:string"/>\r
554     </xs:sequence>\r
555   </xs:complexType>\r
556   <xs:complexType name="ToolType">\r
557     <xs:sequence>\r
558       <xs:element name="ToolName" type="xs:string"/>\r
559       <xs:element name="ToolArgs" type="xs:string"/>\r
560     </xs:sequence>\r
561   </xs:complexType>\r
562 </xs:schema>\r