mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-01 18:58:29 +00:00
xinput: Implement XInputGetCapabilitiesEx.
This commit is contained in:
parent
39304daf4d
commit
aea7918433
|
@ -1129,3 +1129,33 @@ DWORD WINAPI DECLSPEC_HOTPATCH XInputGetBatteryInformation(DWORD index, BYTE typ
|
||||||
|
|
||||||
return ERROR_NOT_SUPPORTED;
|
return ERROR_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DWORD WINAPI DECLSPEC_HOTPATCH XInputGetCapabilitiesEx(DWORD unk, DWORD index, DWORD flags, XINPUT_CAPABILITIES_EX *caps)
|
||||||
|
{
|
||||||
|
HIDD_ATTRIBUTES attr;
|
||||||
|
DWORD ret = ERROR_SUCCESS;
|
||||||
|
|
||||||
|
TRACE("unk %lu, index %lu, flags %#lx, capabilities %p.\n", unk, index, flags, caps);
|
||||||
|
|
||||||
|
start_update_thread();
|
||||||
|
|
||||||
|
if (index >= XUSER_MAX_COUNT) return ERROR_BAD_ARGUMENTS;
|
||||||
|
|
||||||
|
if (!controller_lock(&controllers[index])) return ERROR_DEVICE_NOT_CONNECTED;
|
||||||
|
|
||||||
|
if (flags & XINPUT_FLAG_GAMEPAD && controllers[index].caps.SubType != XINPUT_DEVSUBTYPE_GAMEPAD)
|
||||||
|
ret = ERROR_DEVICE_NOT_CONNECTED;
|
||||||
|
else if (!HidD_GetAttributes(controllers[index].device, &attr))
|
||||||
|
ret = ERROR_DEVICE_NOT_CONNECTED;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
caps->Capabilities = controllers[index].caps;
|
||||||
|
caps->VendorId = attr.VendorID;
|
||||||
|
caps->ProductId = attr.ProductID;
|
||||||
|
caps->VersionNumber = attr.VersionNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
controller_unlock(&controllers[index]);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
|
@ -7,3 +7,4 @@
|
||||||
8 stdcall XInputGetKeystroke(long long ptr)
|
8 stdcall XInputGetKeystroke(long long ptr)
|
||||||
10 stub XInputGetAudioDeviceIds(long ptr ptr ptr ptr)
|
10 stub XInputGetAudioDeviceIds(long ptr ptr ptr ptr)
|
||||||
100 stdcall XInputGetStateEx(long ptr)
|
100 stdcall XInputGetStateEx(long ptr)
|
||||||
|
108 stdcall XInputGetCapabilitiesEx(long long long ptr)
|
||||||
|
|
|
@ -210,6 +210,16 @@ typedef struct _XINPUT_CAPABILITIES {
|
||||||
XINPUT_VIBRATION Vibration;
|
XINPUT_VIBRATION Vibration;
|
||||||
} XINPUT_CAPABILITIES, *PXINPUT_CAPABILITIES;
|
} XINPUT_CAPABILITIES, *PXINPUT_CAPABILITIES;
|
||||||
|
|
||||||
|
typedef struct _XINPUT_CAPABILITIES_EX
|
||||||
|
{
|
||||||
|
XINPUT_CAPABILITIES Capabilities;
|
||||||
|
WORD VendorId;
|
||||||
|
WORD ProductId;
|
||||||
|
WORD VersionNumber;
|
||||||
|
WORD unk1;
|
||||||
|
DWORD unk2;
|
||||||
|
} XINPUT_CAPABILITIES_EX, *PXINPUT_CAPABILITIES_EX;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Defines the structure for a joystick input event which is
|
* Defines the structure for a joystick input event which is
|
||||||
* retrieved using the function XInputGetKeystroke
|
* retrieved using the function XInputGetKeystroke
|
||||||
|
@ -237,6 +247,7 @@ DWORD WINAPI XInputSetState(DWORD, XINPUT_VIBRATION*);
|
||||||
DWORD WINAPI XInputGetState(DWORD, XINPUT_STATE*);
|
DWORD WINAPI XInputGetState(DWORD, XINPUT_STATE*);
|
||||||
DWORD WINAPI XInputGetKeystroke(DWORD, DWORD, PXINPUT_KEYSTROKE);
|
DWORD WINAPI XInputGetKeystroke(DWORD, DWORD, PXINPUT_KEYSTROKE);
|
||||||
DWORD WINAPI XInputGetCapabilities(DWORD, DWORD, XINPUT_CAPABILITIES*);
|
DWORD WINAPI XInputGetCapabilities(DWORD, DWORD, XINPUT_CAPABILITIES*);
|
||||||
|
DWORD WINAPI XInputGetCapabilitiesEx(DWORD, DWORD, DWORD, XINPUT_CAPABILITIES_EX*);
|
||||||
DWORD WINAPI XInputGetDSoundAudioDeviceGuids(DWORD, GUID*, GUID*);
|
DWORD WINAPI XInputGetDSoundAudioDeviceGuids(DWORD, GUID*, GUID*);
|
||||||
DWORD WINAPI XInputGetBatteryInformation(DWORD, BYTE, XINPUT_BATTERY_INFORMATION*);
|
DWORD WINAPI XInputGetBatteryInformation(DWORD, BYTE, XINPUT_BATTERY_INFORMATION*);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue