\r
#include "DriverSample.h"\r
\r
-#define DISPLAY_ONLY_MY_ITEM 0x0002\r
+#define DISPLAY_ONLY_MY_ITEM 0x0000\r
\r
EFI_GUID mFormSetGuid = FORMSET_GUID;\r
EFI_GUID mInventoryGuid = INVENTORY_GUID;\r
\r
CHAR16 VariableName[] = L"MyIfrNVData";\r
\r
-HII_VENDOR_DEVICE_PATH mHiiVendorDevicePath1 = {\r
+EFI_HANDLE DriverHandle[2] = {NULL, NULL};\r
+DRIVER_SAMPLE_PRIVATE_DATA *PrivateData = NULL;\r
+\r
+HII_VENDOR_DEVICE_PATH mHiiVendorDevicePath0 = {\r
{\r
{\r
HARDWARE_DEVICE_PATH,\r
}\r
};\r
\r
-HII_VENDOR_DEVICE_PATH mHiiVendorDevicePath2 = {\r
+HII_VENDOR_DEVICE_PATH mHiiVendorDevicePath1 = {\r
{\r
{\r
HARDWARE_DEVICE_PATH,\r
EFI_STATUS SavedStatus;\r
EFI_HII_PACKAGE_LIST_HEADER *PackageList;\r
EFI_HII_HANDLE HiiHandle[2];\r
- EFI_HANDLE DriverHandle[2] = {NULL, NULL};\r
- DRIVER_SAMPLE_PRIVATE_DATA *PrivateData;\r
EFI_SCREEN_DESCRIPTOR Screen;\r
EFI_HII_DATABASE_PROTOCOL *HiiDatabase;\r
EFI_HII_STRING_PROTOCOL *HiiString;\r
Status = gBS->InstallMultipleProtocolInterfaces (\r
&DriverHandle[0],\r
&gEfiDevicePathProtocolGuid,\r
- &mHiiVendorDevicePath1,\r
+ &mHiiVendorDevicePath0,\r
&gEfiHiiConfigAccessProtocolGuid,\r
&PrivateData->ConfigAccess,\r
NULL\r
Status = gBS->InstallMultipleProtocolInterfaces (\r
&DriverHandle[1],\r
&gEfiDevicePathProtocolGuid,\r
- &mHiiVendorDevicePath2,\r
+ &mHiiVendorDevicePath1,\r
NULL\r
);\r
ASSERT_EFI_ERROR (Status);\r
//\r
// Example of how to display only the item we sent to HII\r
//\r
- if (DISPLAY_ONLY_MY_ITEM == 0x0001) {\r
- //\r
- // Have the browser pull out our copy of the data, and only display our data\r
- //\r
- // Status = FormConfig->SendForm (FormConfig, TRUE, HiiHandle, NULL, NULL, NULL, &Screen, NULL);\r
- //\r
- Status = FormBrowser2->SendForm (\r
- FormBrowser2,\r
- HiiHandle,\r
- 1,\r
- NULL,\r
- 0,\r
- NULL,\r
- NULL\r
- );\r
- SavedStatus = Status;\r
-\r
- Status = HiiDatabase->RemovePackageList (HiiDatabase, HiiHandle[0]);\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
- }\r
+ //\r
+ // Have the browser pull out our copy of the data, and only display our data\r
+ //\r
+ Status = FormBrowser2->SendForm (\r
+ FormBrowser2,\r
+ &(HiiHandle[DISPLAY_ONLY_MY_ITEM]),\r
+ 1,\r
+ NULL,\r
+ 0,\r
+ NULL,\r
+ NULL\r
+ );\r
+ SavedStatus = Status;\r
\r
- Status = HiiDatabase->RemovePackageList (HiiDatabase, HiiHandle[1]);\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
- }\r
+ Status = HiiDatabase->RemovePackageList (HiiDatabase, HiiHandle[0]);\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
\r
- return SavedStatus;\r
- } else {\r
- //\r
- // Have the browser pull out all the data in the HII Database and display it.\r
- //\r
- // Status = FormConfig->SendForm (FormConfig, TRUE, 0, NULL, NULL, NULL, NULL, NULL);\r
- //\r
+ Status = HiiDatabase->RemovePackageList (HiiDatabase, HiiHandle[1]);\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
+\r
+ return SavedStatus;\r
+}\r
+\r
+/**\r
+ Unloads the application and its installed protocol.\r
+\r
+ @param[in] ImageHandle Handle that identifies the image to be unloaded.\r
+\r
+ @retval EFI_SUCCESS The image has been unloaded.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+DriverSampleUnload (\r
+ IN EFI_HANDLE ImageHandle\r
+ )\r
+{\r
+ if (DriverHandle[0] != NULL) {\r
+ gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverHandle[0],\r
+ &gEfiDevicePathProtocolGuid,\r
+ &mHiiVendorDevicePath0,\r
+ &gEfiHiiConfigAccessProtocolGuid,\r
+ &PrivateData->ConfigAccess,\r
+ NULL\r
+ );\r
+ }\r
+\r
+ if (DriverHandle[1] != NULL) {\r
+ gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverHandle[1],\r
+ &gEfiDevicePathProtocolGuid,\r
+ &mHiiVendorDevicePath1,\r
+ NULL\r
+ );\r
+ }\r
+\r
+ if (PrivateData != NULL) {\r
+ FreePool (PrivateData);\r
}\r
\r
return EFI_SUCCESS;\r