mirror of https://github.com/acidanthera/audk.git
Add unload function for DriverSample
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8052 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
9a6dcbf302
commit
2f3065c0fb
|
@ -16,14 +16,17 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
|
||||||
#include "DriverSample.h"
|
#include "DriverSample.h"
|
||||||
|
|
||||||
#define DISPLAY_ONLY_MY_ITEM 0x0002
|
#define DISPLAY_ONLY_MY_ITEM 0x0000
|
||||||
|
|
||||||
EFI_GUID mFormSetGuid = FORMSET_GUID;
|
EFI_GUID mFormSetGuid = FORMSET_GUID;
|
||||||
EFI_GUID mInventoryGuid = INVENTORY_GUID;
|
EFI_GUID mInventoryGuid = INVENTORY_GUID;
|
||||||
|
|
||||||
CHAR16 VariableName[] = L"MyIfrNVData";
|
CHAR16 VariableName[] = L"MyIfrNVData";
|
||||||
|
|
||||||
HII_VENDOR_DEVICE_PATH mHiiVendorDevicePath1 = {
|
EFI_HANDLE DriverHandle[2] = {NULL, NULL};
|
||||||
|
DRIVER_SAMPLE_PRIVATE_DATA *PrivateData = NULL;
|
||||||
|
|
||||||
|
HII_VENDOR_DEVICE_PATH mHiiVendorDevicePath0 = {
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
HARDWARE_DEVICE_PATH,
|
HARDWARE_DEVICE_PATH,
|
||||||
|
@ -48,7 +51,7 @@ HII_VENDOR_DEVICE_PATH mHiiVendorDevicePath1 = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
HII_VENDOR_DEVICE_PATH mHiiVendorDevicePath2 = {
|
HII_VENDOR_DEVICE_PATH mHiiVendorDevicePath1 = {
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
HARDWARE_DEVICE_PATH,
|
HARDWARE_DEVICE_PATH,
|
||||||
|
@ -739,8 +742,6 @@ DriverSampleInit (
|
||||||
EFI_STATUS SavedStatus;
|
EFI_STATUS SavedStatus;
|
||||||
EFI_HII_PACKAGE_LIST_HEADER *PackageList;
|
EFI_HII_PACKAGE_LIST_HEADER *PackageList;
|
||||||
EFI_HII_HANDLE HiiHandle[2];
|
EFI_HII_HANDLE HiiHandle[2];
|
||||||
EFI_HANDLE DriverHandle[2] = {NULL, NULL};
|
|
||||||
DRIVER_SAMPLE_PRIVATE_DATA *PrivateData;
|
|
||||||
EFI_SCREEN_DESCRIPTOR Screen;
|
EFI_SCREEN_DESCRIPTOR Screen;
|
||||||
EFI_HII_DATABASE_PROTOCOL *HiiDatabase;
|
EFI_HII_DATABASE_PROTOCOL *HiiDatabase;
|
||||||
EFI_HII_STRING_PROTOCOL *HiiString;
|
EFI_HII_STRING_PROTOCOL *HiiString;
|
||||||
|
@ -819,7 +820,7 @@ DriverSampleInit (
|
||||||
Status = gBS->InstallMultipleProtocolInterfaces (
|
Status = gBS->InstallMultipleProtocolInterfaces (
|
||||||
&DriverHandle[0],
|
&DriverHandle[0],
|
||||||
&gEfiDevicePathProtocolGuid,
|
&gEfiDevicePathProtocolGuid,
|
||||||
&mHiiVendorDevicePath1,
|
&mHiiVendorDevicePath0,
|
||||||
&gEfiHiiConfigAccessProtocolGuid,
|
&gEfiHiiConfigAccessProtocolGuid,
|
||||||
&PrivateData->ConfigAccess,
|
&PrivateData->ConfigAccess,
|
||||||
NULL
|
NULL
|
||||||
|
@ -859,7 +860,7 @@ DriverSampleInit (
|
||||||
Status = gBS->InstallMultipleProtocolInterfaces (
|
Status = gBS->InstallMultipleProtocolInterfaces (
|
||||||
&DriverHandle[1],
|
&DriverHandle[1],
|
||||||
&gEfiDevicePathProtocolGuid,
|
&gEfiDevicePathProtocolGuid,
|
||||||
&mHiiVendorDevicePath2,
|
&mHiiVendorDevicePath1,
|
||||||
NULL
|
NULL
|
||||||
);
|
);
|
||||||
ASSERT_EFI_ERROR (Status);
|
ASSERT_EFI_ERROR (Status);
|
||||||
|
@ -937,40 +938,68 @@ DriverSampleInit (
|
||||||
//
|
//
|
||||||
// Example of how to display only the item we sent to HII
|
// Example of how to display only the item we sent to HII
|
||||||
//
|
//
|
||||||
if (DISPLAY_ONLY_MY_ITEM == 0x0001) {
|
//
|
||||||
//
|
// Have the browser pull out our copy of the data, and only display our data
|
||||||
// Have the browser pull out our copy of the data, and only display our data
|
//
|
||||||
//
|
Status = FormBrowser2->SendForm (
|
||||||
// Status = FormConfig->SendForm (FormConfig, TRUE, HiiHandle, NULL, NULL, NULL, &Screen, NULL);
|
FormBrowser2,
|
||||||
//
|
&(HiiHandle[DISPLAY_ONLY_MY_ITEM]),
|
||||||
Status = FormBrowser2->SendForm (
|
1,
|
||||||
FormBrowser2,
|
NULL,
|
||||||
HiiHandle,
|
0,
|
||||||
1,
|
NULL,
|
||||||
NULL,
|
NULL
|
||||||
0,
|
);
|
||||||
NULL,
|
SavedStatus = Status;
|
||||||
NULL
|
|
||||||
);
|
|
||||||
SavedStatus = Status;
|
|
||||||
|
|
||||||
Status = HiiDatabase->RemovePackageList (HiiDatabase, HiiHandle[0]);
|
Status = HiiDatabase->RemovePackageList (HiiDatabase, HiiHandle[0]);
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
Status = HiiDatabase->RemovePackageList (HiiDatabase, HiiHandle[1]);
|
Status = HiiDatabase->RemovePackageList (HiiDatabase, HiiHandle[1]);
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
return SavedStatus;
|
return SavedStatus;
|
||||||
} else {
|
}
|
||||||
//
|
|
||||||
// Have the browser pull out all the data in the HII Database and display it.
|
/**
|
||||||
//
|
Unloads the application and its installed protocol.
|
||||||
// Status = FormConfig->SendForm (FormConfig, TRUE, 0, NULL, NULL, NULL, NULL, NULL);
|
|
||||||
//
|
@param[in] ImageHandle Handle that identifies the image to be unloaded.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The image has been unloaded.
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
DriverSampleUnload (
|
||||||
|
IN EFI_HANDLE ImageHandle
|
||||||
|
)
|
||||||
|
{
|
||||||
|
if (DriverHandle[0] != NULL) {
|
||||||
|
gBS->UninstallMultipleProtocolInterfaces (
|
||||||
|
DriverHandle[0],
|
||||||
|
&gEfiDevicePathProtocolGuid,
|
||||||
|
&mHiiVendorDevicePath0,
|
||||||
|
&gEfiHiiConfigAccessProtocolGuid,
|
||||||
|
&PrivateData->ConfigAccess,
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (DriverHandle[1] != NULL) {
|
||||||
|
gBS->UninstallMultipleProtocolInterfaces (
|
||||||
|
DriverHandle[1],
|
||||||
|
&gEfiDevicePathProtocolGuid,
|
||||||
|
&mHiiVendorDevicePath1,
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (PrivateData != NULL) {
|
||||||
|
FreePool (PrivateData);
|
||||||
}
|
}
|
||||||
|
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
MODULE_TYPE = DXE_DRIVER
|
MODULE_TYPE = DXE_DRIVER
|
||||||
VERSION_STRING = 1.0
|
VERSION_STRING = 1.0
|
||||||
ENTRY_POINT = DriverSampleInit
|
ENTRY_POINT = DriverSampleInit
|
||||||
|
UNLOAD_IMAGE = DriverSampleUnload
|
||||||
|
|
||||||
#
|
#
|
||||||
# The following information is for reference only and not required by the build tools.
|
# The following information is for reference only and not required by the build tools.
|
||||||
|
|
Loading…
Reference in New Issue