mirror of
https://github.com/goatcorp/Dalamud.git
synced 2025-12-12 10:17:22 +01:00
Reduce usage of exceptions from Boot (#2373)
* wip * make pretty * Remove CRT version check from IM * fix * Simplify IsDebuggerPresent hook
This commit is contained in:
parent
f613b177a2
commit
9092e36b33
16 changed files with 494 additions and 295 deletions
|
|
@ -1,5 +1,6 @@
|
|||
#pragma once
|
||||
|
||||
#include <expected>
|
||||
#include <filesystem>
|
||||
#include <functional>
|
||||
#include <span>
|
||||
|
|
@ -7,6 +8,7 @@
|
|||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
#include "error_info.h"
|
||||
#include "unicode.h"
|
||||
|
||||
namespace utils {
|
||||
|
|
@ -18,7 +20,7 @@ namespace utils {
|
|||
loaded_module(void* hModule) : m_hModule(reinterpret_cast<HMODULE>(hModule)) {}
|
||||
loaded_module(size_t hModule) : m_hModule(reinterpret_cast<HMODULE>(hModule)) {}
|
||||
|
||||
std::filesystem::path path() const;
|
||||
DalamudExpected<std::filesystem::path> path() const;
|
||||
|
||||
bool is_current_process() const { return m_hModule == GetModuleHandleW(nullptr); }
|
||||
bool owns_address(const void* pAddress) const;
|
||||
|
|
@ -57,9 +59,9 @@ namespace utils {
|
|||
void* get_imported_function_pointer(const char* pcszDllName, const char* pcszFunctionName, uint32_t hintOrOrdinal) const;
|
||||
template<typename TFn> TFn** get_imported_function_pointer(const char* pcszDllName, const char* pcszFunctionName, uint32_t hintOrOrdinal) { return reinterpret_cast<TFn**>(get_imported_function_pointer(pcszDllName, pcszFunctionName, hintOrOrdinal)); }
|
||||
|
||||
[[nodiscard]] std::unique_ptr<std::remove_pointer_t<HGLOBAL>, decltype(&FreeResource)> get_resource(LPCWSTR lpName, LPCWSTR lpType) const;
|
||||
[[nodiscard]] std::wstring get_description() const;
|
||||
[[nodiscard]] const VS_FIXEDFILEINFO& get_file_version() const;
|
||||
[[nodiscard]] DalamudExpected<std::unique_ptr<std::remove_pointer_t<HGLOBAL>, decltype(&FreeResource)>> get_resource(LPCWSTR lpName, LPCWSTR lpType) const;
|
||||
[[nodiscard]] DalamudExpected<std::wstring> get_description() const;
|
||||
[[nodiscard]] DalamudExpected<const VS_FIXEDFILEINFO&> get_file_version() const;
|
||||
|
||||
static loaded_module current_process();
|
||||
static std::vector<loaded_module> all_modules();
|
||||
|
|
@ -268,7 +270,7 @@ namespace utils {
|
|||
|
||||
bool is_running_on_wine();
|
||||
|
||||
std::filesystem::path get_module_path(HMODULE hModule);
|
||||
std::wstring get_string_resource(uint32_t resId);
|
||||
|
||||
/// @brief Find the game main window.
|
||||
/// @return Handle to the game main window, or nullptr if it doesn't exist (yet).
|
||||
|
|
@ -279,4 +281,18 @@ namespace utils {
|
|||
std::wstring escape_shell_arg(const std::wstring& arg);
|
||||
|
||||
std::wstring format_win32_error(DWORD err);
|
||||
|
||||
class scoped_dpi_awareness_context {
|
||||
DPI_AWARENESS_CONTEXT m_old;
|
||||
decltype(&SetThreadDpiAwarenessContext) m_setThreadDpiAwarenessContext;
|
||||
|
||||
public:
|
||||
scoped_dpi_awareness_context();
|
||||
scoped_dpi_awareness_context(DPI_AWARENESS_CONTEXT);
|
||||
~scoped_dpi_awareness_context();
|
||||
scoped_dpi_awareness_context(const scoped_dpi_awareness_context&) = delete;
|
||||
scoped_dpi_awareness_context(scoped_dpi_awareness_context&&) = delete;
|
||||
scoped_dpi_awareness_context& operator=(const scoped_dpi_awareness_context&) = delete;
|
||||
scoped_dpi_awareness_context& operator=(scoped_dpi_awareness_context&&) = delete;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue