• Advertisement
Sign in to follow this  

Virtual Joystick Driver

This topic is 3104 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Unfortunately microsoft.public.development.device.drivers is not available on my ISP's news server so I'm posting here because it does relate to DirectInput in many ways. I am developing a Virtual Joystick driver (based on the vhidmini example in the DDK) and am simulating two joysticks. The problem is because the driver has a single VID and PID when DirectInput enumerates the two joysticks it names them both "Virtual Joystick 1". I need to change it so joystick two is called "Virtual Joystick 2". Looking in the registry I found a key in HKLM\SYSTEM\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM that holds the joystick name in OEMName. It seems changing this value changes the name of both joysticks. Looking at the following DirectInput struct I was hoping I could use tszInstanceName to name the joysticks differently
typedef struct DIDEVICEINSTANCE {
    DWORD dwSize;
    GUID guidInstance;
    GUID guidProduct;
    DWORD dwDevType;
    TCHAR tszInstanceName[MAX_PATH];
    TCHAR tszProductName[MAX_PATH];
    GUID guidFFDriver;
    WORD wUsagePage;
    WORD wUsage;
} DIDEVICEINSTANCE, *LPDIDEVICEINSTANCE;
I couldn't find anything in the registry that related to "InstanceName" apart from HKLM\SYSTEM\CurrentControlSet\Control\MediaProperties\PrivateProperties\DirectInput\VID_xxxx&PID_xxxx\DeviceInstances but it didn't seem to have an entry for a "friendly name". It actually appears that tszInstanceName uses the same OEMName entry that tszProductName uses! The only way I could see to set this was in DirectInput using LPDIRECTINPUTDEVICE2->SetProperty with DIPROP_INSTANCENAME. Attempting that I received an error of E_NOTIMPL (not implemented). It seems a simple goal to have the two joysticks (which share a PID/VID) uniquely named but I am seriously having doubts as to if it's even possible. Incidently I have two Logitech gamepads that when plugged in have the same PID/VID and also share the same name. It seems odd there is no built in mechanism to uniquely name them. Is there a way around it? Any registry entries, hacks or anything?

Share this post


Link to post
Share on other sites
Advertisement
Sign in to follow this  

  • Advertisement