(self)
| 874 | |
| 875 | |
| 876 | def free_library(self): |
| 877 | self.dbg("Freeing dll") |
| 878 | if not bool(self.pythonmemorymodule): return |
| 879 | pmodule = pointer(self.pythonmemorymodule) |
| 880 | if self.pythonmemorymodule.contents.initialized != 0: |
| 881 | DllEntry = DllEntryProc(self.pythonmemorymodule.contents.codeBase + self.pythonmemorymodule.contents.headers.contents.OptionalHeader.AddressOfEntryPoint) |
| 882 | DllEntry(cast(self.pythonmemorymodule.contents.codeBase, HINSTANCE), DLL_PROCESS_DETACH, 0) |
| 883 | pmodule.contents.initialized = 0 |
| 884 | if bool(self.pythonmemorymodule.contents.modules) and self.pythonmemorymodule.contents.numModules > 0: |
| 885 | for i in range(1, self.pythonmemorymodule.contents.numModules): |
| 886 | if self.pythonmemorymodule.contents.modules[i] != HANDLE(INVALID_HANDLE_VALUE): |
| 887 | FreeLibrary(self.pythonmemorymodule.contents.modules[i]) |
| 888 | |
| 889 | if bool(self._codebaseaddr): |
| 890 | VirtualFree(self._codebaseaddr, 0, MEM_RELEASE) |
| 891 | |
| 892 | HeapFree(GetProcessHeap(), 0, self.pythonmemorymodule) |
| 893 | self.close() |
| 894 | |
| 895 | def free_exe(self): |
| 896 | self.dbg("Freeing exe") |
no test coverage detected