]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EmulatorPkg/Win/Host/WinHost.c
EmulatorPkg/Win: Unload DLLs before reset
[mirror_edk2.git] / EmulatorPkg / Win / Host / WinHost.c
index 096292f95a6fadc2e6ef3c1098212d63f5c40608..084cd4cbd7ec4a7a06802fb51c4312c7bba285eb 100644 (file)
@@ -226,12 +226,26 @@ WinReset (
   IN VOID            *ResetData OPTIONAL\r
   )\r
 {\r
+  UINTN  Index;\r
+\r
   ASSERT (ResetType <= EfiResetPlatformSpecific);\r
   SecPrint ("  Emu ResetSystem is called: ResetType = %s\n", mResetTypeStr[ResetType]);\r
 \r
   if (ResetType == EfiResetShutdown) {\r
     exit (0);\r
   } else {\r
+    //\r
+    // Unload all DLLs\r
+    //\r
+    for (Index = 0; Index < mPdbNameModHandleArraySize; Index++) {\r
+      if (mPdbNameModHandleArray[Index].PdbPointer != NULL) {\r
+        SecPrint ("  Emu Unload DLL: %s\n", mPdbNameModHandleArray[Index].PdbPointer);\r
+        FreeLibrary (mPdbNameModHandleArray[Index].ModHandle);\r
+        HeapFree (GetProcessHeap (), 0, mPdbNameModHandleArray[Index].PdbPointer);\r
+        mPdbNameModHandleArray[Index].PdbPointer = NULL;\r
+      }\r
+    }\r
+\r
     //\r
     // Jump back to SetJump with jump code = ResetType + 1\r
     //\r