Skip to content
This repository has been archived by the owner on Aug 6, 2021. It is now read-only.

xinput1_3.dll hook for Satisfactory to load other modules and resolve their symbols in runtime via PDB.

License

Notifications You must be signed in to change notification settings

satisfactorymodding/SatisfactoryModBootstrapper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SatisfactoryModBootstrapper

xinput1_3.dll hook for Satisfactory to load other modules and resolve their symbols in runtime via PDB.

It will load all modules in the directory "loaders" located in the game's root directory, resolve all of their UnrealEngine & Satisfactory function import dependencies, and call BootstrapModule on each of the modules. It provides a low-level API to load additional DLLs which will have their exports resolved too, which can be used for creating fully functional mod loaders or core mods dependent only on the game's and Unreal Engine's code. Module loading order is defined by the alphabetical ordering of their names.

BootstrapModule signature as follows:

#include "bootstrapper_exports.h"

extern "C" DLLEXPORT void BootstrapModule(BootstrapAccessors& accessors);

Note that you should copy src/exports.h to your project and rename it to something like bootstrapper_exports.h to use functions provided by the bootstrapper.

BootstrapAccessors provide access to various functions of the bootstrapper, including checking if module is loaded, loading another module, resolving it's addresses, retrieving root game directory path. List of the exposed properties can be modified in future releases, but changes are guaranteed to be backwards compatible.

You can specify persistent module name independent from file name which will be used in linking by bootstrapper additionaly to file's normal name. Function signature as follows

#include "bootstrapper_exports.h"

extern "C" DLLEXPORT const char* GetLinkageModuleName();