dolphin/Source/Core/Common/LdrWatcher.h
Pierre Bourdon e149ad4f0a
treewide: convert GPLv2+ license info to SPDX tags
SPDX standardizes how source code conveys its copyright and licensing
information. See https://spdx.github.io/spdx-spec/1-rationale/ . SPDX
tags are adopted in many large projects, including things like the Linux
kernel.
2021-07-05 04:35:56 +02:00

38 lines
806 B
C++

// Copyright 2008 Dolphin Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include <functional>
#include <list>
#include <string>
#include <vector>
struct LdrDllLoadEvent
{
const std::wstring& name;
uintptr_t base_address;
};
class LdrObserver
{
public:
std::vector<std::wstring> 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<void(const LdrDllLoadEvent&)> action;
void* cookie{};
};
class LdrWatcher
{
public:
void Install(const LdrObserver& observer);
~LdrWatcher();
private:
bool InjectCurrentModules(const LdrObserver& observer);
void UninstallAll();
std::list<LdrObserver> observers;
};