text: // module
  #include <module/module.hpp>
  
  // spdlog
  #define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_TRACE
  #include <spdlog/sinks/stdout_color_sinks.h>
  #include <spdlog/spdlog.h>
  
  // example
  #include <pe_header.hpp>
  
  void module::module_main(HMODULE dll_hmodule) {
      spdlog::set_level(spdlog::level::debug);
      SPDLOG_INFO("spdlog level: {}", spdlog::level::to_string_view(spdlog::get_level()));
  
      auto proc = GetCurrentProcess();
      auto pid  = GetProcessId(proc);
  
      /* yep, it works */
      auto p_hmm        = (HMODULE) GetParent((HWND) dll_hmodule);
      auto p_tid        = GetThreadId(p_hmm);
      auto base_address = (uintptr_t) GetModuleHandle(NULL);
  
  
      SPDLOG_DEBUG("Current process id: '{:d}'", pid);
      SPDLOG_DEBUG("Base address: '{:#x}'", base_address);
  
      /* your code here */
      read_dos_msg(base_address);
  
      FreeLibraryAndExitThread(dll_hmodule, NULL);
  }