Skip to content

Rewrite using stubgen #9

@lostmsu

Description

@lostmsu

I merged the code produced by https://github.com/Francesco149/stubgen and this project prior to "massive rewrite". I believe the merged code does not suffer from some issues reported here.

The major differences from this project are:

  • lack of hooking race conditions: client game calls to the affected APIs will wait until the hook is fully initialized
  • correct stub parameter handling in respect to the complicated x64 calling convention

The major difference from stubgen is that to create the dummy swap chain we need access to the original dxgi.dll functions, which in stubgen are not available (spinlock wait in the asm_wait_init). So the hook installation thread exposes a thread local variable, that bypasses the wait in asm_wait_init.

I tested it on my 64-bit Factorio. For 32 bit version to work one needs check_init_thread and check_init_thread_end MACROs implemented in trampolines32.asm (they aren't)

NOTE: the dxgi.dll exports were recreated from Windows 11 22H2 (e.g. build 22621)

DXGI-Stub.zip

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions