EFI_HANDLE ImageHandle\r
)\r
{\r
- EFI_STATUS Status;\r
-\r
- //\r
- // Call the unload handlers for all the modules\r
//\r
- Status = ProcessModuleUnloadList (ImageHandle);\r
-\r
+ // Call the unload handlers for all the modules.\r
+ // \r
+ // Note: All libraries were constructed in SMM space, \r
+ // therefore we can not destruct them in Unload \r
+ // handler.\r
//\r
- // If the driver specific unload handler does not return an error, then call all of the\r
- // library destructors. If the unload handler returned an error, then the driver can not be\r
- // unloaded, and the library destructors should not be called\r
- //\r
- if (!EFI_ERROR (Status)) {\r
- ProcessLibraryDestructorList (ImageHandle, gST);\r
- }\r
-\r
- //\r
- // Return the status from the driver specific unload handler\r
- //\r
- return Status;\r
+ return ProcessModuleUnloadList (ImageHandle);\r
}\r
\r
/**\r