From a616ddaeddeb6164a4c1f84d16856db985b4d7c6 Mon Sep 17 00:00:00 2001 From: Peter Repukat Date: Sat, 11 Feb 2017 21:51:00 +0100 Subject: [PATCH] Update ViGEm --- .../include/{public.h => ViGEmBusShared.h} | 33 ++++++++++++- dependencies/ViGEmUM/include/ViGEmUM.h | 46 +++++++++++------- dependencies/ViGEmUM/x64/ViGEmUM.dll | Bin 27136 -> 28160 bytes dependencies/ViGEmUM/x64/lib/ViGEmUM.lib | Bin 3646 -> 4098 bytes dependencies/ViGEmUM/x86/ViGEmUM.dll | Bin 22016 -> 22528 bytes dependencies/ViGEmUM/x86/lib/ViGEmUM.lib | Bin 3682 -> 4142 bytes 6 files changed, 60 insertions(+), 19 deletions(-) rename dependencies/ViGEmUM/include/{public.h => ViGEmBusShared.h} (92%) diff --git a/dependencies/ViGEmUM/include/public.h b/dependencies/ViGEmUM/include/ViGEmBusShared.h similarity index 92% rename from dependencies/ViGEmUM/include/public.h rename to dependencies/ViGEmUM/include/ViGEmBusShared.h index edb4517..9d369a6 100644 --- a/dependencies/ViGEmUM/include/public.h +++ b/dependencies/ViGEmUM/include/ViGEmBusShared.h @@ -24,6 +24,7 @@ SOFTWARE. // {96E42B22-F5E9-42F8-B043-ED0F932F014F} +// ReSharper disable once CppMissingIncludeGuard DEFINE_GUID(GUID_DEVINTERFACE_BUSENUM_VIGEM, 0x96E42B22, 0xF5E9, 0x42F8, 0xB0, 0x43, 0xED, 0x0F, 0x93, 0x2F, 0x01, 0x4F); @@ -37,6 +38,17 @@ DEFINE_GUID(GUID_DEVCLASS_VIGEM_RAWPDO, #pragma once +// +// Common version for user-mode library and driver compatibility +// +// On initialization, the user-mode library has this number embedded +// and sends it to the bus on its enumeration. The bus compares this +// number to the one it was compiled with. If they match, the bus +// access is permitted and success reported. If they mismatch, an +// error is reported and the user-mode library skips this instance. +// +#define VIGEM_COMMON_VERSION 0x0001 + #define FILE_DEVICE_BUSENUM FILE_DEVICE_BUS_EXTENDER #define BUSENUM_IOCTL(_index_) CTL_CODE(FILE_DEVICE_BUSENUM, _index_, METHOD_BUFFERED, FILE_READ_DATA) #define BUSENUM_W_IOCTL(_index_) CTL_CODE(FILE_DEVICE_BUSENUM, _index_, METHOD_BUFFERED, FILE_WRITE_DATA) @@ -50,6 +62,7 @@ DEFINE_GUID(GUID_DEVCLASS_VIGEM_RAWPDO, // #define IOCTL_VIGEM_PLUGIN_TARGET BUSENUM_W_IOCTL (IOCTL_VIGEM_BASE + 0x000) #define IOCTL_VIGEM_UNPLUG_TARGET BUSENUM_W_IOCTL (IOCTL_VIGEM_BASE + 0x001) +#define IOCTL_VIGEM_CHECK_VERSION BUSENUM_W_IOCTL (IOCTL_VIGEM_BASE + 0x002) #define IOCTL_XUSB_REQUEST_NOTIFICATION BUSENUM_RW_IOCTL(IOCTL_VIGEM_BASE + 0x200) #define IOCTL_XUSB_SUBMIT_REPORT BUSENUM_W_IOCTL (IOCTL_VIGEM_BASE + 0x201) @@ -58,8 +71,6 @@ DEFINE_GUID(GUID_DEVCLASS_VIGEM_RAWPDO, #define IOCTL_XGIP_SUBMIT_REPORT BUSENUM_W_IOCTL (IOCTL_VIGEM_BASE + 0x204) #define IOCTL_XGIP_SUBMIT_INTERRUPT BUSENUM_W_IOCTL (IOCTL_VIGEM_BASE + 0x205) -#define VIGEM_COMMON_VERSION 0x01 -#define VIGEM_INTERFACE_STANDARD_VERSION 0x02 // // Data structure used in PlugIn and UnPlug ioctls @@ -557,4 +568,22 @@ VOID FORCEINLINE XGIP_SUBMIT_INTERRUPT_INIT( Report->SerialNo = SerialNo; } +typedef struct _VIGEM_CHECK_VERSION +{ + IN ULONG Size; + + IN ULONG Version; + +} VIGEM_CHECK_VERSION, *PVIGEM_CHECK_VERSION; + +VOID FORCEINLINE VIGEM_CHECK_VERSION_INIT( + _Out_ PVIGEM_CHECK_VERSION CheckVersion, + _In_ ULONG Version +) +{ + RtlZeroMemory(CheckVersion, sizeof(VIGEM_CHECK_VERSION)); + + CheckVersion->Size = sizeof(VIGEM_CHECK_VERSION); + CheckVersion->Version = Version; +} diff --git a/dependencies/ViGEmUM/include/ViGEmUM.h b/dependencies/ViGEmUM/include/ViGEmUM.h index b2d4ebb..cfb7cfb 100644 --- a/dependencies/ViGEmUM/include/ViGEmUM.h +++ b/dependencies/ViGEmUM/include/ViGEmUM.h @@ -23,12 +23,14 @@ SOFTWARE. */ +// ReSharper disable CppMissingIncludeGuard #ifdef _MSC_VER +// ReSharper restore CppMissingIncludeGuard #pragma once #endif #include -#include +#include #ifdef VIGEM_EXPORTS #define VIGEM_API __declspec(dllexport) @@ -36,28 +38,30 @@ SOFTWARE. #define VIGEM_API __declspec(dllimport) #endif -#define VIGEM_TARGETS_MAX 4 +#define VIGEM_TARGETS_MAX 0xFF typedef enum _VIGEM_ERRORS { - VIGEM_ERROR_NONE = 0x0000, - VIGEM_ERROR_BUS_NOT_FOUND, - VIGEM_ERROR_NO_FREE_SLOT, - VIGEM_ERROR_INVALID_TARGET, - VIGEM_ERROR_REMOVAL_FAILED, - VIGEM_ERROR_ALREADY_CONNECTED, - VIGEM_ERROR_TARGET_UNINITIALIZED, - VIGEM_ERROR_TARGET_NOT_PLUGGED_IN + VIGEM_ERROR_NONE = 0x20000000, + VIGEM_ERROR_BUS_NOT_FOUND = 0xE0000001, + VIGEM_ERROR_NO_FREE_SLOT = 0xE0000002, + VIGEM_ERROR_INVALID_TARGET = 0xE0000003, + VIGEM_ERROR_REMOVAL_FAILED = 0xE0000004, + VIGEM_ERROR_ALREADY_CONNECTED = 0xE0000005, + VIGEM_ERROR_TARGET_UNINITIALIZED = 0xE0000006, + VIGEM_ERROR_TARGET_NOT_PLUGGED_IN = 0xE0000007, + VIGEM_ERROR_BUS_VERSION_MISMATCH = 0xE0000008, + VIGEM_ERROR_BUS_ACCESS_FAILED = 0xE0000009 } VIGEM_ERROR; #define VIGEM_SUCCESS(_val_) (_val_ == VIGEM_ERROR_NONE) typedef enum _VIGEM_TARGET_STATE { - VigemTargetNew, - VigemTargetInitialized, - VigemTargetConnected, - VigemTargetDisconnected + VIGEM_TARGET_NEW, + VIGEM_TARGET_INITIALIZED, + VIGEM_TARGET_CONNECTED, + VIGEM_TARGET_DISCONNECTED } VIGEM_TARGET_STATE, *PVIGEM_TARGET_STATE; // @@ -66,9 +70,10 @@ typedef enum _VIGEM_TARGET_STATE typedef struct _VIGEM_TARGET { IN ULONG Size; - IN USHORT Version; IN ULONG SerialNo; IN VIGEM_TARGET_STATE State; + IN USHORT VendorId; + IN USHORT ProductId; } VIGEM_TARGET, *PVIGEM_TARGET; // @@ -81,8 +86,7 @@ VOID FORCEINLINE VIGEM_TARGET_INIT( RtlZeroMemory(Target, sizeof(VIGEM_TARGET)); Target->Size = sizeof(VIGEM_TARGET); - Target->Version = VIGEM_COMMON_VERSION; - Target->State = VigemTargetInitialized; + Target->State = VIGEM_TARGET_INITIALIZED; } typedef VOID(CALLBACK* PVIGEM_XUSB_NOTIFICATION)( @@ -134,6 +138,14 @@ extern "C" _In_ VIGEM_TARGET Target, _In_ XGIP_REPORT Report); + VIGEM_API VOID vigem_target_set_vid( + _Out_ PVIGEM_TARGET Target, + _In_ USHORT VendorId); + + VIGEM_API VOID vigem_target_set_pid( + _Out_ PVIGEM_TARGET Target, + _In_ USHORT ProductId); + #ifdef __cplusplus } #endif diff --git a/dependencies/ViGEmUM/x64/ViGEmUM.dll b/dependencies/ViGEmUM/x64/ViGEmUM.dll index d75c41576d9571ed2c0b72396a47c1f17dd08646..ceb445cd2fd4ad1181c99df504fccabcb4fddf81 100644 GIT binary patch literal 28160 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 delta 690 zcmZuuJxc>Y5Pf$hdtZA7j4>J|2E-2{;%PKNM8rx2u}Gthm_mY$A_}$v3$YS)8dGUu zFCrE;qJW^TgE=Df@(ZHl(lY{pBe zuV4d+0pT6MI0MWI;N}%<5AfkWDmW7GAwO!^;>d9J6{O%h!#?*xBj&=U16|G_V zdUhK{v1g6@sCK>BLM+sA{QR`+yp<7f_fRI(&} z+jWlan&UL%M60eAo#~**rijyZE%D@J>Jx3$C0nZ%89CdSIH@HrWMJpmO;^Q3ZY~ht zH7m00PBxH^zhsJ+6bR9Z9wR%F3zEqy^R3k-f8D)3(~MY{i2`0q#0RfYQpvjUhD diff --git a/dependencies/ViGEmUM/x86/ViGEmUM.dll b/dependencies/ViGEmUM/x86/ViGEmUM.dll index 0b79a125dd2eeee886bdc495972817e12f1f9f57..ae06dd22479d0536a9a47f21d1deaa21b1daae3b 100644 GIT binary patch delta 4032 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 Xxzb$9)p9}ZW$rN7#f1)*yEXp?cfiMv delta 3742 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 S(ie3peT<&M(~4HCkiP*wM&%~} delta 654 zcmZvZJ4*vW6ot>a*<{?AAwqoMJ6fbjAwFVa5CxwQh!1=bt5}GQy&x9iFHmzk!OBJu zZ2SW%`V(x#%0>iHEKQ?#vZ9WsTkV^0~%fB?DXSbh9qH({h&(@s> z$4aoB?*C4pIKqJkTt$Gg05&v`=Uh)*lM)DVEpgK^-zT_UGULc_Pz4VP5%`d(hCm46 zf8Mw#7IRaxGjj{Y@rn7dx!mjmy}OST_wK1Hyk-T9rLuirtI0bqHkW$NuETG3e7X}g zt|2eNvq@cV=KI4w{e>HP741ipzSWvE187T*Sm)ENtgV1o*=K`M6@X=xv%$HlRXnQD z#Vc`n3A7XHq$=HJcMa>nzNj-lK?9xWSmnSAJ@f}uo4Fl4H%zV3U%tm^tb+N6BSO2; TLEFt(8n?j$f?k|vI+W@II$Vbv