diff --git a/dlls/windows.gaming.input/main.c b/dlls/windows.gaming.input/main.c index c71374e34a3..e97322212e4 100644 --- a/dlls/windows.gaming.input/main.c +++ b/dlls/windows.gaming.input/main.c @@ -142,10 +142,12 @@ static HRESULT STDMETHODCALLTYPE vector_view_gamepad_IndexOf( } static HRESULT STDMETHODCALLTYPE vector_view_gamepad_GetMany( - IVectorView_Gamepad *iface, ULONG start_index, IGamepad **items, UINT *value) + IVectorView_Gamepad *iface, ULONG start_index, + ULONG items_size, IGamepad **items, UINT *value) { FIXME("iface %p, start_index %#x, items %p, value %p stub!\n", iface, start_index, items, value); - return E_NOTIMPL; + *value = 0; + return E_BOUNDS; } static const struct IVectorView_GamepadVtbl vector_view_gamepad_vtbl = @@ -266,10 +268,12 @@ static HRESULT STDMETHODCALLTYPE vector_view_raw_game_controller_IndexOf( } static HRESULT STDMETHODCALLTYPE vector_view_raw_game_controller_GetMany( - IVectorView_RawGameController *iface, ULONG start_index, IRawGameController **items, UINT *value) + IVectorView_RawGameController *iface, ULONG start_index, + ULONG items_size, IRawGameController **items, UINT *value) { FIXME("iface %p, start_index %#x, items %p, value %p stub!\n", iface, start_index, items, value); - return E_NOTIMPL; + *value = 0; + return E_BOUNDS; } static const struct IVectorView_RawGameControllerVtbl vector_view_raw_game_controller_vtbl = diff --git a/dlls/windows.gaming.input/tests/input.c b/dlls/windows.gaming.input/tests/input.c index 62822b30c28..6ed40186df9 100644 --- a/dlls/windows.gaming.input/tests/input.c +++ b/dlls/windows.gaming.input/tests/input.c @@ -175,6 +175,10 @@ static void test_Gamepad(void) ok(hr == E_BOUNDS, "IVectorView_Gamepad_GetAt failed, hr %#x\n", hr); ok(gamepad == NULL, "IVectorView_Gamepad_GetAt returned %p\n", gamepad); + hr = IVectorView_Gamepad_GetMany(gamepads, size, 1, &gamepad, &size); + ok(hr == E_BOUNDS, "IVectorView_Gamepad_GetMany failed, hr %#x\n", hr); + ok(size == 0, "IVectorView_Gamepad_GetMany returned count %u\n", size); + size = 0xdeadbeef; found = TRUE; gamepad = (IGamepad *)0xdeadbeef; @@ -343,6 +347,10 @@ static void test_RawGameController(void) ok(hr == S_OK, "IVectorView_RawGameController_get_Size failed, hr %#x\n", hr); ok(size != 0xdeadbeef, "IVectorView_RawGameController_get_Size returned %u\n", size); + hr = IVectorView_RawGameController_GetMany(controllers, size, 1, &controller, &size); + ok(hr == E_BOUNDS, "IVectorView_RawGameController_GetMany failed, hr %#x\n", hr); + ok(size == 0, "IVectorView_RawGameController_GetMany returned count %u\n", size); + controller = (IRawGameController *)0xdeadbeef; hr = IVectorView_RawGameController_GetAt(controllers, size, &controller); ok(hr == E_BOUNDS, "IVectorView_RawGameController_GetAt failed, hr %#x\n", hr); diff --git a/dlls/windows.media.speech/main.c b/dlls/windows.media.speech/main.c index 92215fe717d..1a9ba51b071 100644 --- a/dlls/windows.media.speech/main.c +++ b/dlls/windows.media.speech/main.c @@ -139,7 +139,8 @@ static HRESULT STDMETHODCALLTYPE vector_view_voice_information_IndexOf( } static HRESULT STDMETHODCALLTYPE vector_view_voice_information_GetMany( - IVectorView_VoiceInformation *iface, ULONG start_index, IVoiceInformation **items, UINT *value) + IVectorView_VoiceInformation *iface, ULONG start_index, + ULONG items_size, IVoiceInformation **items, UINT *value) { FIXME("iface %p, start_index %#x, items %p, value %p stub!\n", iface, start_index, items, value); *value = 0; diff --git a/dlls/windows.media.speech/tests/speech.c b/dlls/windows.media.speech/tests/speech.c index 33ce75c0c0e..30244e59612 100644 --- a/dlls/windows.media.speech/tests/speech.c +++ b/dlls/windows.media.speech/tests/speech.c @@ -48,6 +48,7 @@ static void test_SpeechSynthesizer(void) IVectorView_VoiceInformation *voices = NULL; IInstalledVoicesStatic *voices_static = NULL; IActivationFactory *factory = NULL; + IVoiceInformation *voice; IInspectable *inspectable = NULL, *tmp_inspectable = NULL; IAgileObject *agile_object = NULL, *tmp_agile_object = NULL; HSTRING str; @@ -98,6 +99,10 @@ static void test_SpeechSynthesizer(void) ok(hr == S_OK, "IVectorView_VoiceInformation_get_Size voices failed, hr %#x\n", hr); todo_wine ok(size != 0 && size != 0xdeadbeef, "IVectorView_VoiceInformation_get_Size returned %u\n", size); + hr = IVectorView_VoiceInformation_GetMany(voices, size, 1, &voice, &size); + ok(hr == S_OK, "IVectorView_VoiceInformation_GetMany failed, hr %#x\n", hr); + ok(size == 0, "IVectorView_VoiceInformation_GetMany returned count %u\n", size); + IVectorView_VoiceInformation_Release(voices); IInstalledVoicesStatic_Release(voices_static); diff --git a/include/windows.foundation.collections.idl b/include/windows.foundation.collections.idl index 50a678e410c..250f8b9acbe 100644 --- a/include/windows.foundation.collections.idl +++ b/include/windows.foundation.collections.idl @@ -83,7 +83,7 @@ cpp_quote("#endif") [propget] HRESULT Current([out, retval] T *value); [propget] HRESULT HasCurrent([out, retval] BOOL *value); HRESULT MoveNext([out, retval] BOOL *value); - HRESULT GetMany([in] UINT32 count, [out] T *items, [out, retval] UINT32 *value); + HRESULT GetMany([in] UINT32 count, [in] UINT32 items_size, [out] T *items, [out, retval] UINT32 *value); } [ @@ -104,7 +104,7 @@ cpp_quote("#endif") HRESULT GetAt([in] ULONG index, [out, retval] T *value); [propget] HRESULT Size([out, retval] ULONG *value); HRESULT IndexOf([in, optional] T element, [out] ULONG *index, [out, retval] BOOLEAN *value); - HRESULT GetMany([in] ULONG start_index, [out] T *items, [out, retval] ULONG *value); + HRESULT GetMany([in] ULONG start_index, [in] ULONG items_size, [out] T *items, [out, retval] ULONG *value); } } #endif