return EFI_SUCCESS;\r
}\r
\r
+EFI_STATUS\r
+ThunkUpdateFormCallBack (\r
+ IN EFI_HANDLE CallbackHandle,\r
+ IN CONST HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY *HandleMapEntry\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+ EFI_FORM_CALLBACK_PROTOCOL *FrameworkFormCallbackProtocol;\r
+ EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccessProtocol;\r
+ EFI_HANDLE UefiDriverHandle;\r
+ HII_TRHUNK_CONFIG_ACCESS_PROTOCOL_INSTANCE *ConfigAccessProtocolInstance;\r
+ \r
+ Status = gBS->HandleProtocol (\r
+ CallbackHandle,\r
+ &gEfiFormCallbackProtocolGuid,\r
+ (VOID **) &FrameworkFormCallbackProtocol\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+ \r
+ Status = mUefiHiiDatabaseProtocol->GetPackageListHandle (\r
+ mUefiHiiDatabaseProtocol,\r
+ HandleMapEntry->UefiHiiHandle,\r
+ &UefiDriverHandle\r
+ );\r
+ ASSERT_EFI_ERROR (Status);\r
+ Status = gBS->HandleProtocol (\r
+ UefiDriverHandle,\r
+ &gEfiHiiConfigAccessProtocolGuid,\r
+ (VOID **) &ConfigAccessProtocol\r
+ );\r
+ ASSERT_EFI_ERROR (Status);\r
+ \r
+ ConfigAccessProtocolInstance = HII_TRHUNK_CONFIG_ACCESS_PROTOCOL_INSTANCE_FROM_PROTOCOL (ConfigAccessProtocol);\r
+ \r
+ ConfigAccessProtocolInstance->FrameworkFormCallbackProtocol = FrameworkFormCallbackProtocol;\r
+\r
+ return EFI_SUCCESS;\r
+}\r
\r
EFI_STATUS\r
EFIAPI\r
\r
--*/\r
{\r
+ EFI_STATUS Status;\r
+ EFI_HII_THUNK_PRIVATE_DATA *Private;\r
+ HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY *HandleMapEntry;\r
+\r
+ Private = EFI_HII_THUNK_PRIVATE_DATA_FROM_THIS(This);\r
+\r
+ HandleMapEntry = FrameworkHiiHandleToMapDatabaseEntry (Private, Handle);\r
+\r
+ if (HandleMapEntry == NULL) {\r
+ return EFI_NOT_FOUND;\r
+ }\r
+ \r
+ if (Data->FormSetUpdate) {\r
+ Status = ThunkUpdateFormCallBack ((EFI_HANDLE) (UINTN) Data->FormCallbackHandle, HandleMapEntry);\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
+ }\r
return EFI_SUCCESS;\r
}\r