// Copyright 2008 Dolphin Emulator Project // Licensed under GPLv2+ // Refer to the license.txt file included. #pragma once #include #include #include #include struct LdrDllLoadEvent { const std::wstring& name; uintptr_t base_address; }; class LdrObserver { public: std::vector module_names; // NOTE: This may be called from a Ldr callout. While most things are probably fine, try to // keep things as simple as possible, and just queue real work onto something else. std::function action; void* cookie{}; }; class LdrWatcher { public: void Install(const LdrObserver& observer); ~LdrWatcher(); private: bool InjectCurrentModules(const LdrObserver& observer); void UninstallAll(); std::list observers; };