Navigation

    ViGEm Forums

    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Twitter
    • GitHub
    • Discord

    Usermode DLL and API

    ViGEm
    1
    3
    156
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Flarum Bot
      Flarum Bot last edited by

      Originally posted by DarKcyde


      Seems you've decided to go with a static library. Guess I'll be the first to request a DLL again.

      I've implemented a working ViGEm solution in Thrustmaster TARGET script (for TM joysticks). It uses an interpreted C syntax, but it's not compiled, nor a full C implementation. Crucially, it does have Loadlibrary() which allowed me to use ViGEmUM.dll just fine. Because it's not compiled, I have no way to link a .lib to the script.

      I would think that other script based languages would have an easier time loading a DLL. In particular I'm thinking of Autohotkey. I know it has very good DLL loading abilities, but I don't know if it could use a static library.

      About the API, the limited C syntax I'm stuck with doesn't have the ability to pass a struct as a parameter to a function. I can pass the address of a struct though, so pointer params are just fine. I had to modify the gamepad update function in the DLL to take pointers only. The new API seems to have changed nearly all params to pointers, except the vigem_target_x360_update() requires a XUSB_REPORT struct still. If that was a pointer, I wouldn't have to fiddle with anything.

      I've seen a working winsock (dll) implementation using Target script, and that used pointers wherever a struct was passed. Perhaps pointers are standard practice for passing structs to DLLs? I dunno, I'm a hobbyist coder at best... way beyond my pay grade.

      1 Reply Last reply Reply Quote 0
      • Flarum Bot
        Flarum Bot last edited by

        Originally posted by nefarius


        Counter-question: is it really necessary for you to use the scripting environment you're using to meet your goal?

        I can add a build configuration for a DLL for the project, sure. My main motivation for preferring a static library is simple: most of the developers which use it in native C/C++ did static compilation anyways and since the footprint is really small and version collisions are much more prone with DLLs that's why I did what I did.

        1 Reply Last reply Reply Quote 0
        • Flarum Bot
          Flarum Bot last edited by

          Originally posted by DarKcyde


          There are no alternatives that provide the abilities that Target does. Besides complex C programming for macros, it handles HID device hiding, virtual joystick driver, and LED control of TM devices. Joystick Gremlin is the closest generic solution I think. Still no where near the abilities of the TM solution. Really the only major drawback of Target is it only works with TM devices, which isn't a problem for us folks who own those devices.

          1 Reply Last reply Reply Quote 0
          • First post
            Last post