Rebase against 41df83c50e1c3cfdd6e8ffb65de7838f8503632c.

This commit is contained in:
Zebediah Figura 2021-03-19 21:15:35 -05:00
parent 34d5c3568f
commit f8b6fde40c
6 changed files with 11 additions and 573 deletions

View File

@ -1,4 +1,4 @@
From cef4355bf086ab493401931ae635792bad1186f3 Mon Sep 17 00:00:00 2001
From c65ffcf059cf2768a9ca6ee7a7e38d8a6a25fc44 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Fri, 22 May 2020 16:37:37 +1000
Subject: [PATCH] ntdll: NtQuerySystemInformation support
@ -12,10 +12,10 @@ Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
2 files changed, 44 insertions(+)
diff --git a/dlls/ntdll/unix/system.c b/dlls/ntdll/unix/system.c
index 909a7c5672f..cf36faf2b78 100644
index 6fa71ddfb91..fad1d072962 100644
--- a/dlls/ntdll/unix/system.c
+++ b/dlls/ntdll/unix/system.c
@@ -2557,6 +2557,28 @@ NTSTATUS WINAPI NtQuerySystemInformation( SYSTEM_INFORMATION_CLASS class,
@@ -2714,6 +2714,28 @@ NTSTATUS WINAPI NtQuerySystemInformation( SYSTEM_INFORMATION_CLASS class,
ret = STATUS_SUCCESS;
break;
@ -45,15 +45,16 @@ index 909a7c5672f..cf36faf2b78 100644
FIXME( "(0x%08x,%p,0x%08x,%p) stub\n", class, info, size, ret_size );
diff --git a/include/winternl.h b/include/winternl.h
index 9226f000557..7e85ee02552 100644
index fcdedaec8aa..618fab7d7c2 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -988,10 +988,32 @@ typedef enum _SYSTEM_INFORMATION_CLASS {
@@ -1550,11 +1550,33 @@ typedef enum _SYSTEM_INFORMATION_CLASS {
SystemMemoryListInformation = 80,
SystemFileCacheInformationEx = 81,
SystemDynamicTimeZoneInformation = 102,
+ SystemCodeIntegrityInformation = 103,
SystemLogicalProcessorInformationEx = 107,
SystemHypervisorSharedPageInformation = 197,
SystemInformationClassMax
} SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS;
@ -82,5 +83,5 @@ index 9226f000557..7e85ee02552 100644
ThreadBasicInformation = 0,
ThreadTimes,
--
2.27.0
2.30.2

View File

@ -51,7 +51,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "6d26689484070b2c4ad4e0e16812c6eb8176cd40"
echo "41df83c50e1c3cfdd6e8ffb65de7838f8503632c"
}
# Show version information
@ -2228,7 +2228,7 @@ fi
# | * configure.ac, dlls/dxgkrnl.sys/Makefile.in, dlls/dxgkrnl.sys/dxgkrnl.sys.spec, dlls/dxgkrnl.sys/main.c,
# | dlls/dxgmms1.sys/Makefile.in, dlls/dxgmms1.sys/dxgmms1.sys.spec, dlls/dxgmms1.sys/main.c,
# | dlls/ntoskrnl.exe/tests/driver.c, dlls/win32k.sys/Makefile.in, dlls/win32k.sys/main.c, dlls/win32k.sys/win32k.sys.spec,
# | loader/wine.inf.in, programs/winedevice/device.c, tools/make_specfiles
# | programs/winedevice/device.c, tools/make_specfiles
# |
if test "$enable_winedevice_Default_Drivers" -eq 1; then
patch_apply winedevice-Default_Drivers/0001-win32k.sys-Add-stub-driver.patch
@ -2257,7 +2257,7 @@ fi
# | dlls/dxapi.sys/Makefile.in, dlls/dxapi.sys/dxapi.sys.spec, dlls/dxapi.sys/version.rc, dlls/encapi/Makefile.in,
# | dlls/encapi/encapi.spec, dlls/encapi/version.rc, dlls/gcdef/Makefile.in, dlls/gcdef/gcdef.spec, dlls/gcdef/version.rc,
# | dlls/qdv/Makefile.in, dlls/qdv/qdv.spec, dlls/qdv/version.rc, dlls/qedwipes/Makefile.in, dlls/qedwipes/qedwipes.spec,
# | dlls/qedwipes/version.rc, loader/wine.inf.in
# | dlls/qedwipes/version.rc
# |
if test "$enable_dxdiag_new_dlls" -eq 1; then
patch_apply dxdiag-new-dlls/0001-d3dpmesh-add-stub-dll.patch

View File

@ -1,196 +0,0 @@
From df4e50780191fa5ab30808b4b9dc34321650e070 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
Date: Fri, 9 Oct 2020 13:38:18 +0200
Subject: [PATCH] windows.gaming.input: Add stub dll.
---
configure.ac | 1 +
dlls/windows.gaming.input.dll/Makefile.in | 5 +
.../windows.gaming.input.spec | 3 +
.../windows.gaming.input_main.c | 140 ++++++++++++++++++
4 files changed, 149 insertions(+)
create mode 100644 dlls/windows.gaming.input.dll/Makefile.in
create mode 100644 dlls/windows.gaming.input.dll/windows.gaming.input.spec
create mode 100644 dlls/windows.gaming.input.dll/windows.gaming.input_main.c
diff --git a/configure.ac b/configure.ac
index 8c092fb020c..558d2e906a2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3801,6 +3801,7 @@ WINE_CONFIG_MAKEFILE(dlls/win32s16.dll16,enable_win16)
WINE_CONFIG_MAKEFILE(dlls/win87em.dll16,enable_win16)
WINE_CONFIG_MAKEFILE(dlls/winaspi.dll16,enable_win16)
WINE_CONFIG_MAKEFILE(dlls/windebug.dll16,enable_win16)
+WINE_CONFIG_MAKEFILE(dlls/windows.gaming.input.dll)
WINE_CONFIG_MAKEFILE(dlls/windows.media.speech)
WINE_CONFIG_MAKEFILE(dlls/windows.media.speech/tests)
WINE_CONFIG_MAKEFILE(dlls/windowscodecs)
diff --git a/dlls/windows.gaming.input.dll/Makefile.in b/dlls/windows.gaming.input.dll/Makefile.in
new file mode 100644
index 00000000000..d9478342294
--- /dev/null
+++ b/dlls/windows.gaming.input.dll/Makefile.in
@@ -0,0 +1,5 @@
+MODULE = windows.gaming.input.dll
+IMPORTS = combase uuid
+EXTRADLLFLAGS = -mno-cygwin
+C_SRCS = \
+ windows.gaming.input_main.c
diff --git a/dlls/windows.gaming.input.dll/windows.gaming.input.spec b/dlls/windows.gaming.input.dll/windows.gaming.input.spec
new file mode 100644
index 00000000000..20a8bfa98ea
--- /dev/null
+++ b/dlls/windows.gaming.input.dll/windows.gaming.input.spec
@@ -0,0 +1,3 @@
+@ stdcall -private DllCanUnloadNow()
+@ stdcall -private DllGetActivationFactory(ptr ptr)
+@ stdcall -private DllGetClassObject(ptr ptr ptr)
diff --git a/dlls/windows.gaming.input.dll/windows.gaming.input_main.c b/dlls/windows.gaming.input.dll/windows.gaming.input_main.c
new file mode 100644
index 00000000000..2b6abc4dd84
--- /dev/null
+++ b/dlls/windows.gaming.input.dll/windows.gaming.input_main.c
@@ -0,0 +1,140 @@
+#include <stdarg.h>
+
+#define COBJMACROS
+#include "windef.h"
+#include "winbase.h"
+#include "winstring.h"
+#include "wine/debug.h"
+#include "objbase.h"
+
+#include "initguid.h"
+#include "activation.h"
+
+#include "windows.foundation.h"
+#include "windows.gaming.input.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(input);
+
+static const char *debugstr_hstring(HSTRING hstr)
+{
+ const WCHAR *str;
+ UINT32 len;
+ if (hstr && !((ULONG_PTR)hstr >> 16)) return "(invalid)";
+ str = WindowsGetStringRawBuffer(hstr, &len);
+ return wine_dbgstr_wn(str, len);
+}
+
+struct windows_gaming_input
+{
+ IActivationFactory IActivationFactory_iface;
+ LONG ref;
+};
+
+static inline struct windows_gaming_input *impl_from_IActivationFactory(IActivationFactory *iface)
+{
+ return CONTAINING_RECORD(iface, struct windows_gaming_input, IActivationFactory_iface);
+}
+
+static HRESULT STDMETHODCALLTYPE windows_gaming_input_QueryInterface(
+ IActivationFactory *iface, REFIID iid, void **out)
+{
+ struct windows_gaming_input *impl = impl_from_IActivationFactory(iface);
+ TRACE("iface %p, iid %s, out %p stub!\n", iface, debugstr_guid(iid), out);
+
+ if (IsEqualGUID(iid, &IID_IUnknown) ||
+ IsEqualGUID(iid, &IID_IInspectable) ||
+ IsEqualGUID(iid, &IID_IActivationFactory))
+ {
+ IUnknown_AddRef(iface);
+ *out = &impl->IActivationFactory_iface;
+ return S_OK;
+ }
+
+ FIXME("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid));
+ *out = NULL;
+ return E_NOINTERFACE;
+}
+
+static ULONG STDMETHODCALLTYPE windows_gaming_input_AddRef(
+ IActivationFactory *iface)
+{
+ struct windows_gaming_input *impl = impl_from_IActivationFactory(iface);
+ ULONG ref = InterlockedIncrement(&impl->ref);
+ TRACE("iface %p, ref %u.\n", iface, ref);
+ return ref;
+}
+
+static ULONG STDMETHODCALLTYPE windows_gaming_input_Release(
+ IActivationFactory *iface)
+{
+ struct windows_gaming_input *impl = impl_from_IActivationFactory(iface);
+ ULONG ref = InterlockedDecrement(&impl->ref);
+ TRACE("iface %p, ref %u.\n", iface, ref);
+ return ref;
+}
+
+static HRESULT STDMETHODCALLTYPE windows_gaming_input_GetIids(
+ IActivationFactory *iface, ULONG *iid_count, IID **iids)
+{
+ FIXME("iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE windows_gaming_input_GetRuntimeClassName(
+ IActivationFactory *iface, HSTRING *class_name)
+{
+ FIXME("iface %p, class_name %p stub!\n", iface, class_name);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE windows_gaming_input_GetTrustLevel(
+ IActivationFactory *iface, TrustLevel *trust_level)
+{
+ FIXME("iface %p, trust_level %p stub!\n", iface, trust_level);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE windows_gaming_input_ActivateInstance(
+ IActivationFactory *iface, IInspectable **instance)
+{
+ FIXME("iface %p, instance %p stub!\n", iface, instance);
+ return E_NOTIMPL;
+}
+
+static const struct IActivationFactoryVtbl activation_factory_vtbl =
+{
+ windows_gaming_input_QueryInterface,
+ windows_gaming_input_AddRef,
+ windows_gaming_input_Release,
+ /* IInspectable methods */
+ windows_gaming_input_GetIids,
+ windows_gaming_input_GetRuntimeClassName,
+ windows_gaming_input_GetTrustLevel,
+ /* IActivationFactory methods */
+ windows_gaming_input_ActivateInstance,
+};
+
+static struct windows_gaming_input windows_gaming_input =
+{
+ {&activation_factory_vtbl},
+ 0
+};
+
+HRESULT WINAPI DllCanUnloadNow(void)
+{
+ return S_FALSE;
+}
+
+HRESULT WINAPI DllGetClassObject(REFCLSID clsid, REFIID riid, void **out)
+{
+ FIXME("clsid %s, riid %s, out %p stub!\n", debugstr_guid(clsid), debugstr_guid(riid), out);
+ return CLASS_E_CLASSNOTAVAILABLE;
+}
+
+HRESULT WINAPI DllGetActivationFactory(HSTRING classid, IActivationFactory **factory)
+{
+ TRACE("classid %s, factory %p.\n", debugstr_hstring(classid), factory);
+ *factory = &windows_gaming_input.IActivationFactory_iface;
+ IUnknown_AddRef(*factory);
+ return S_OK;
+}
--
2.20.1

View File

@ -1,208 +0,0 @@
From f94d77d2f797f524793f74c455e56f33725b7728 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
Date: Sat, 20 Feb 2021 00:51:48 +0100
Subject: [PATCH] windows.gaming.input: Implement IGamepadStatics stubs.
---
.../windows.gaming.input_main.c | 125 ++++++++++++++++++
include/windows.foundation.collections.idl | 6 +
loader/wine.inf.in | 1 +
3 files changed, 132 insertions(+)
diff --git a/dlls/windows.gaming.input.dll/windows.gaming.input_main.c b/dlls/windows.gaming.input.dll/windows.gaming.input_main.c
index 2b6abc4dd84..a910f9bf40e 100644
--- a/dlls/windows.gaming.input.dll/windows.gaming.input_main.c
+++ b/dlls/windows.gaming.input.dll/windows.gaming.input_main.c
@@ -10,7 +10,10 @@
#include "initguid.h"
#include "activation.h"
+#define WIDL_using_Windows_Foundation
+#define WIDL_using_Windows_Foundation_Collections
#include "windows.foundation.h"
+#define WIDL_using_Windows_Gaming_Input
#include "windows.gaming.input.h"
WINE_DEFAULT_DEBUG_CHANNEL(input);
@@ -27,6 +30,7 @@ static const char *debugstr_hstring(HSTRING hstr)
struct windows_gaming_input
{
IActivationFactory IActivationFactory_iface;
+ IGamepadStatics IGamepadStatics_iface;
LONG ref;
};
@@ -35,6 +39,119 @@ static inline struct windows_gaming_input *impl_from_IActivationFactory(IActivat
return CONTAINING_RECORD(iface, struct windows_gaming_input, IActivationFactory_iface);
}
+static inline struct windows_gaming_input *impl_from_IGamepadStatics(IGamepadStatics *iface)
+{
+ return CONTAINING_RECORD(iface, struct windows_gaming_input, IGamepadStatics_iface);
+}
+
+static HRESULT STDMETHODCALLTYPE gamepad_statics_QueryInterface(
+ IGamepadStatics *iface, REFIID iid, void **out)
+{
+ TRACE("iface %p, iid %s, out %p stub!\n", iface, debugstr_guid(iid), out);
+
+ if (IsEqualGUID(iid, &IID_IAgileObject))
+ {
+ IUnknown_AddRef(iface);
+ *out = iface;
+ return S_OK;
+ }
+
+ WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid));
+ *out = NULL;
+ return E_NOINTERFACE;
+}
+
+static ULONG STDMETHODCALLTYPE gamepad_statics_AddRef(
+ IGamepadStatics *iface)
+{
+ struct windows_gaming_input *impl = impl_from_IGamepadStatics(iface);
+ ULONG ref = InterlockedIncrement(&impl->ref);
+ TRACE("iface %p, ref %u.\n", iface, ref);
+ return ref;
+}
+
+static ULONG STDMETHODCALLTYPE gamepad_statics_Release(
+ IGamepadStatics *iface)
+{
+ struct windows_gaming_input *impl = impl_from_IGamepadStatics(iface);
+ ULONG ref = InterlockedDecrement(&impl->ref);
+ TRACE("iface %p, ref %u.\n", iface, ref);
+ return ref;
+}
+
+static HRESULT STDMETHODCALLTYPE gamepad_statics_GetIids(
+ IGamepadStatics *iface, ULONG *iid_count, IID **iids)
+{
+ FIXME("iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE gamepad_statics_GetRuntimeClassName(
+ IGamepadStatics *iface, HSTRING *class_name)
+{
+ FIXME("iface %p, class_name %p stub!\n", iface, class_name);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE gamepad_statics_GetTrustLevel(
+ IGamepadStatics *iface, TrustLevel *trust_level)
+{
+ FIXME("iface %p, trust_level %p stub!\n", iface, trust_level);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE gamepad_statics_add_GamepadAdded(
+ IGamepadStatics *iface, IEventHandler_Gamepad *value, EventRegistrationToken* token)
+{
+ FIXME("iface %p, value %p, token %p stub!\n", iface, value, token);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE gamepad_statics_remove_GamepadAdded(
+ IGamepadStatics *iface, EventRegistrationToken token)
+{
+ FIXME("iface %p, token %#I64x stub!\n", iface, token.value);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE gamepad_statics_add_GamepadRemoved(
+ IGamepadStatics *iface, IEventHandler_Gamepad *value, EventRegistrationToken* token)
+{
+ FIXME("iface %p, value %p, token %p stub!\n", iface, value, token);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE gamepad_statics_remove_GamepadRemoved(
+ IGamepadStatics *iface, EventRegistrationToken token)
+{
+ FIXME("iface %p, token %#I64x stub!\n", iface, token.value);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE gamepad_statics_get_Gamepads(
+ IGamepadStatics *iface, IVectorView_Gamepad **value)
+{
+ FIXME("iface %p, value %p stub!\n", iface, value);
+ return E_NOTIMPL;
+}
+
+static const struct IGamepadStaticsVtbl gamepad_statics_vtbl =
+{
+ gamepad_statics_QueryInterface,
+ gamepad_statics_AddRef,
+ gamepad_statics_Release,
+ /* IInspectable methods */
+ gamepad_statics_GetIids,
+ gamepad_statics_GetRuntimeClassName,
+ gamepad_statics_GetTrustLevel,
+ /* IGamepadStatics methods */
+ gamepad_statics_add_GamepadAdded,
+ gamepad_statics_remove_GamepadAdded,
+ gamepad_statics_add_GamepadRemoved,
+ gamepad_statics_remove_GamepadRemoved,
+ gamepad_statics_get_Gamepads,
+};
+
static HRESULT STDMETHODCALLTYPE windows_gaming_input_QueryInterface(
IActivationFactory *iface, REFIID iid, void **out)
{
@@ -50,6 +167,13 @@ static HRESULT STDMETHODCALLTYPE windows_gaming_input_QueryInterface(
return S_OK;
}
+ if (IsEqualGUID(iid, &IID_IGamepadStatics))
+ {
+ IUnknown_AddRef(iface);
+ *out = &impl->IGamepadStatics_iface;
+ return S_OK;
+ }
+
FIXME("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid));
*out = NULL;
return E_NOINTERFACE;
@@ -117,6 +241,7 @@ static const struct IActivationFactoryVtbl activation_factory_vtbl =
static struct windows_gaming_input windows_gaming_input =
{
{&activation_factory_vtbl},
+ {&gamepad_statics_vtbl},
0
};
diff --git a/include/windows.foundation.collections.idl b/include/windows.foundation.collections.idl
index ed05016b96d..ba860a1e82e 100644
--- a/include/windows.foundation.collections.idl
+++ b/include/windows.foundation.collections.idl
@@ -47,6 +47,12 @@ cpp_quote("#endif")
]
delegate HRESULT EventHandler<T>([in] IInspectable *sender, [in] T args);
+ [
+ contract(Windows.Foundation.FoundationContract, 1.0),
+ uuid(9de1c534-6ae1-11e0-84e1-18a905bcc53f)
+ ]
+ delegate HRESULT TypedEventHandler<TSender, TArgs>([in] TSender sender, [in] TArgs args);
+
namespace Collections
{
[
diff --git a/loader/wine.inf.in b/loader/wine.inf.in
index 4cef944fb88..a1cc73d6e57 100644
--- a/loader/wine.inf.in
+++ b/loader/wine.inf.in
@@ -711,6 +711,7 @@ HKLM,%MciExtStr%,"wmx",,"MPEGVideo"
HKLM,%MciExtStr%,"wvx",,"MPEGVideo"
[Misc]
+HKLM,Software\Microsoft\WindowsRuntime\ActivatableClassId\Windows.Gaming.Input.Gamepad,"DllPath",2,"Windows.Gaming.Input.dll"
HKLM,Software\Borland\Database Engine\Settings\SYSTEM\INIT,SHAREDMEMLOCATION,,9000
HKLM,Software\Clients\Mail,,2,"Native Mail Client"
HKLM,Software\Clients\Mail\Native Mail Client,,2,"Native Mail Client"
--
2.20.1

View File

@ -1,159 +0,0 @@
From 17818a1676a5b177795d6509314f5d75f11b6def Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
Date: Tue, 13 Oct 2020 17:58:14 +0200
Subject: [PATCH] windows.gaming.input: Implement IGamepadStatics::Gamepads
stubs.
---
.../windows.gaming.input_main.c | 113 +++++++++++++++++-
1 file changed, 112 insertions(+), 1 deletion(-)
diff --git a/dlls/windows.gaming.input.dll/windows.gaming.input_main.c b/dlls/windows.gaming.input.dll/windows.gaming.input_main.c
index a910f9bf40e..444eb687175 100644
--- a/dlls/windows.gaming.input.dll/windows.gaming.input_main.c
+++ b/dlls/windows.gaming.input.dll/windows.gaming.input_main.c
@@ -31,6 +31,7 @@ struct windows_gaming_input
{
IActivationFactory IActivationFactory_iface;
IGamepadStatics IGamepadStatics_iface;
+ IVectorView_Gamepad IVectorView_Gamepad_iface;
LONG ref;
};
@@ -44,6 +45,113 @@ static inline struct windows_gaming_input *impl_from_IGamepadStatics(IGamepadSta
return CONTAINING_RECORD(iface, struct windows_gaming_input, IGamepadStatics_iface);
}
+static inline struct windows_gaming_input *impl_from_IVectorView_Gamepad(IVectorView_Gamepad *iface)
+{
+ return CONTAINING_RECORD(iface, struct windows_gaming_input, IVectorView_Gamepad_iface);
+}
+
+static HRESULT STDMETHODCALLTYPE vector_view_gamepad_QueryInterface(
+ IVectorView_Gamepad *iface, REFIID iid, void **out)
+{
+ TRACE("iface %p, iid %s, out %p stub!\n", iface, debugstr_guid(iid), out);
+
+ if (IsEqualGUID(iid, &IID_IUnknown) ||
+ IsEqualGUID(iid, &IID_IInspectable) ||
+ IsEqualGUID(iid, &IID_IVectorView_Gamepad))
+ {
+ IUnknown_AddRef(iface);
+ *out = iface;
+ return S_OK;
+ }
+
+ WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid));
+ *out = NULL;
+ return E_NOINTERFACE;
+}
+
+static ULONG STDMETHODCALLTYPE vector_view_gamepad_AddRef(
+ IVectorView_Gamepad *iface)
+{
+ struct windows_gaming_input *impl = impl_from_IVectorView_Gamepad(iface);
+ ULONG ref = InterlockedIncrement(&impl->ref);
+ TRACE("iface %p, ref %u.\n", iface, ref);
+ return ref;
+}
+
+static ULONG STDMETHODCALLTYPE vector_view_gamepad_Release(
+ IVectorView_Gamepad *iface)
+{
+ struct windows_gaming_input *impl = impl_from_IVectorView_Gamepad(iface);
+ ULONG ref = InterlockedDecrement(&impl->ref);
+ TRACE("iface %p, ref %u.\n", iface, ref);
+ return ref;
+}
+
+static HRESULT STDMETHODCALLTYPE vector_view_gamepad_GetIids(
+ IVectorView_Gamepad *iface, ULONG *iid_count, IID **iids)
+{
+ FIXME("iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE vector_view_gamepad_GetRuntimeClassName(
+ IVectorView_Gamepad *iface, HSTRING *class_name)
+{
+ FIXME("iface %p, class_name %p stub!\n", iface, class_name);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE vector_view_gamepad_GetTrustLevel(
+ IVectorView_Gamepad *iface, TrustLevel *trust_level)
+{
+ FIXME("iface %p, trust_level %p stub!\n", iface, trust_level);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE vector_view_gamepad_GetAt(
+ IVectorView_Gamepad *iface, ULONG index, IGamepad **value)
+{
+ FIXME("iface %p, index %#x, value %p stub!\n", iface, index, value);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE vector_view_gamepad_get_Size(
+ IVectorView_Gamepad *iface, ULONG *value)
+{
+ FIXME("iface %p, value %p stub!\n", iface, value);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE vector_view_gamepad_IndexOf(
+ IVectorView_Gamepad *iface, IGamepad *element, ULONG *index, BOOLEAN *value)
+{
+ FIXME("iface %p, element %p, index %p, value %p stub!\n", iface, element, index, value);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE vector_view_gamepad_GetMany(
+ IVectorView_Gamepad *iface, ULONG start_index, IGamepad **items, UINT *value)
+{
+ FIXME("iface %p, start_index %#x, items %p, value %p stub!\n", iface, start_index, items, value);
+ return E_NOTIMPL;
+}
+
+static const struct IVectorView_GamepadVtbl vector_view_gamepad_vtbl =
+{
+ vector_view_gamepad_QueryInterface,
+ vector_view_gamepad_AddRef,
+ vector_view_gamepad_Release,
+ /* IInspectable methods */
+ vector_view_gamepad_GetIids,
+ vector_view_gamepad_GetRuntimeClassName,
+ vector_view_gamepad_GetTrustLevel,
+ /* IVectorView<Gamepad> methods */
+ vector_view_gamepad_GetAt,
+ vector_view_gamepad_get_Size,
+ vector_view_gamepad_IndexOf,
+ vector_view_gamepad_GetMany,
+};
+
static HRESULT STDMETHODCALLTYPE gamepad_statics_QueryInterface(
IGamepadStatics *iface, REFIID iid, void **out)
{
@@ -131,8 +239,10 @@ static HRESULT STDMETHODCALLTYPE gamepad_statics_remove_GamepadRemoved(
static HRESULT STDMETHODCALLTYPE gamepad_statics_get_Gamepads(
IGamepadStatics *iface, IVectorView_Gamepad **value)
{
+ struct windows_gaming_input *impl = impl_from_IGamepadStatics(iface);
FIXME("iface %p, value %p stub!\n", iface, value);
- return E_NOTIMPL;
+ *value = &impl->IVectorView_Gamepad_iface;
+ return S_OK;
}
static const struct IGamepadStaticsVtbl gamepad_statics_vtbl =
@@ -242,6 +352,7 @@ static struct windows_gaming_input windows_gaming_input =
{
{&activation_factory_vtbl},
{&gamepad_statics_vtbl},
+ {&vector_view_gamepad_vtbl},
0
};
--
2.20.1

View File

@ -1 +1 @@
6d26689484070b2c4ad4e0e16812c6eb8176cd40
41df83c50e1c3cfdd6e8ffb65de7838f8503632c