+ fileBuffer.append("\r\n};\r\n");\r
+ }\r
+ }\r
+\r
+ /**\r
+ ExternCallBackToAutoGenC\r
+ \r
+ This function adds <SetVirtualAddressMapCallBack> and\r
+ <ExitBootServicesCallBack> infomation to AutoGen.c\r
+ \r
+ @param fileBuffer\r
+ String buffer for AutoGen.c\r
+ @throws BuildException\r
+ **/\r
+ void ExternCallBackToAutoGenH(String moduleType)\r
+ throws EdkException {\r
+ //\r
+ // Collect module's <SetVirtualAddressMapCallBack> and\r
+ // <ExitBootServiceCallBack> and add to setVirtualAddList\r
+ // exitBootServiceList.\r
+ //\r
+ String[] setVirtuals = saq.getSetVirtualAddressMapCallBackArray();\r
+ String[] exitBoots = saq.getExitBootServicesCallBackArray();\r
+ //\r
+ // Add c code in autogen.c which relate to <SetVirtualAddressMapCallBack>\r
+ // and <ExitBootServicesCallBack>\r
+ //\r
+ switch (CommonDefinition.getModuleType(moduleType)) {\r
+ case CommonDefinition.ModuleTypeDxeDriver:\r
+ case CommonDefinition.ModuleTypeDxeRuntimeDriver:\r
+ case CommonDefinition.ModuleTypeDxeSalDriver:\r
+ case CommonDefinition.ModuleTypeUefiDriver:\r
+ case CommonDefinition.ModuleTypeUefiApplication:\r
+ //\r
+ // Write SetVirtualAddressMap function definition.\r
+ //\r
+ for (int i = 0; setVirtuals != null && i < setVirtuals.length; i++) {\r
+ if (setVirtuals[i].equalsIgnoreCase("")) {\r
+ continue;\r
+ }\r
+ functionDeclarations.append("VOID\r\n");\r
+ functionDeclarations.append("EFIAPI\r\n");\r
+ functionDeclarations.append(setVirtuals[i]);\r
+ functionDeclarations.append(" (\r\n");\r
+ functionDeclarations.append(" IN EFI_EVENT Event,\r\n");\r
+ functionDeclarations.append(" IN VOID *Context\r\n");\r
+ functionDeclarations.append(" );\r\n\r\n");\r
+ }\r
+\r
+ //\r
+ // Write DriverExitBootServices function definition.\r
+ //\r
+ for (int i = 0; exitBoots != null && i < exitBoots.length; i++) {\r
+ if (exitBoots[i].equalsIgnoreCase("")) {\r
+ continue;\r
+ }\r
+\r
+ functionDeclarations.append("VOID\r\n");\r
+ functionDeclarations.append("EFIAPI\r\n");\r
+ functionDeclarations.append(exitBoots[i]);\r
+ functionDeclarations.append(" (\r\n");\r
+ functionDeclarations.append(" IN EFI_EVENT Event,\r\n");\r
+ functionDeclarations.append(" IN VOID *Context\r\n");\r
+ functionDeclarations.append(" );\r\n\r\n");\r
+ }\r
+ break;\r
+ default:\r
+ break;\r