mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-09-13 09:17:20 -07:00
Added dpnet-Server-EnumServiceProviders patchset
This commit is contained in:
parent
799d451409
commit
1fc93d6e9f
@ -0,0 +1,144 @@
|
||||
From cca287da02e2946705ad89f6e8c052b68199ad31 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Tue, 1 Jun 2021 17:15:44 +1000
|
||||
Subject: [PATCH v3] dpnet: Implement IDirectPlay8Server EnumServiceProviders
|
||||
|
||||
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
---
|
||||
dlls/dpnet/server.c | 14 ++++++-
|
||||
dlls/dpnet/tests/server.c | 86 +++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 98 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/dpnet/server.c b/dlls/dpnet/server.c
|
||||
index 977771697ac..26dd76388b1 100644
|
||||
--- a/dlls/dpnet/server.c
|
||||
+++ b/dlls/dpnet/server.c
|
||||
@@ -126,9 +126,19 @@ static HRESULT WINAPI IDirectPlay8ServerImpl_EnumServiceProviders(IDirectPlay8Se
|
||||
PDWORD pcReturned, DWORD dwFlags)
|
||||
{
|
||||
IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
|
||||
- FIXME("(%p)->(%s %s %p %p %p %d)\n", This, debugstr_guid(pguidServiceProvider), debugstr_guid(pguidApplication),
|
||||
+ TRACE("(%p)->(%s %s %p %p %p %d)\n", This, debugstr_guid(pguidServiceProvider), debugstr_guid(pguidApplication),
|
||||
pSPInfoBuffer, pcbEnumData, pcReturned, dwFlags);
|
||||
- return E_NOTIMPL;
|
||||
+
|
||||
+ if(!This->msghandler)
|
||||
+ return DPNERR_UNINITIALIZED;
|
||||
+
|
||||
+ if(dwFlags)
|
||||
+ FIXME("Unhandled flags %x\n", dwFlags);
|
||||
+
|
||||
+ if(pguidApplication)
|
||||
+ FIXME("Application guid %s is currently being ignored\n", debugstr_guid(pguidApplication));
|
||||
+
|
||||
+ return enum_services_providers(pguidServiceProvider, pSPInfoBuffer, pcbEnumData, pcReturned);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI IDirectPlay8ServerImpl_CancelAsyncOperation(IDirectPlay8Server *iface, DPNHANDLE hAsyncHandle, DWORD dwFlags)
|
||||
diff --git a/dlls/dpnet/tests/server.c b/dlls/dpnet/tests/server.c
|
||||
index 74a0e5adfcf..ae7e876522d 100644
|
||||
--- a/dlls/dpnet/tests/server.c
|
||||
+++ b/dlls/dpnet/tests/server.c
|
||||
@@ -184,6 +184,91 @@ static void test_server_info(void)
|
||||
}
|
||||
}
|
||||
|
||||
+static void test_enum_service_providers(void)
|
||||
+{
|
||||
+ DPN_SERVICE_PROVIDER_INFO *serv_prov_info;
|
||||
+ IDirectPlay8Server *server = NULL;
|
||||
+ DWORD items, size;
|
||||
+ DWORD i;
|
||||
+ HRESULT hr;
|
||||
+
|
||||
+ hr = CoCreateInstance( &CLSID_DirectPlay8Server, NULL, CLSCTX_ALL, &IID_IDirectPlay8Server, (LPVOID*)&server);
|
||||
+ ok(hr == S_OK, "Failed to create IDirectPlay8Server object\n");
|
||||
+ if (FAILED(hr))
|
||||
+ return;
|
||||
+
|
||||
+ size = 0;
|
||||
+ items = 0;
|
||||
+ hr = IDirectPlay8Server_EnumServiceProviders(server, NULL, NULL, serv_prov_info, &size, &items, 0);
|
||||
+ ok(hr == DPNERR_UNINITIALIZED, "got %x\n", hr);
|
||||
+
|
||||
+ hr = IDirectPlay8Server_Initialize(server, NULL, DirectPlayMessageHandler, 0);
|
||||
+ ok(hr == S_OK, "got 0x%08x\n", hr);
|
||||
+ if (FAILED(hr))
|
||||
+ {
|
||||
+ IDirectPlay8Server_Release(server);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ size = 0;
|
||||
+ items = 0;
|
||||
+
|
||||
+ hr = IDirectPlay8Server_EnumServiceProviders(server, NULL, NULL, NULL, &size, NULL, 0);
|
||||
+ ok(hr == E_POINTER, "IDirectPlay8Server_EnumServiceProviders failed with %x\n", hr);
|
||||
+
|
||||
+ hr = IDirectPlay8Server_EnumServiceProviders(server, NULL, NULL, NULL, NULL, &items, 0);
|
||||
+ ok(hr == E_POINTER, "IDirectPlay8Server_EnumServiceProviders failed with %x\n", hr);
|
||||
+
|
||||
+ hr = IDirectPlay8Server_EnumServiceProviders(server, NULL, NULL, NULL, &size, &items, 0);
|
||||
+ ok(hr == DPNERR_BUFFERTOOSMALL, "IDirectPlay8Server_EnumServiceProviders failed with %x\n", hr);
|
||||
+ ok(size != 0, "size is unexpectedly 0\n");
|
||||
+
|
||||
+ serv_prov_info = HeapAlloc(GetProcessHeap(), 0, size);
|
||||
+
|
||||
+ hr = IDirectPlay8Server_EnumServiceProviders(server, NULL, NULL, serv_prov_info, &size, &items, 0);
|
||||
+ ok(hr == S_OK, "IDirectPlay8Server_EnumServiceProviders failed with %x\n", hr);
|
||||
+ ok(items != 0, "Found unexpectedly no service providers\n");
|
||||
+
|
||||
+ trace("number of items found: %d\n", items);
|
||||
+
|
||||
+ for (i=0;i<items;i++)
|
||||
+ {
|
||||
+ trace("Found Service Provider: %s\n", wine_dbgstr_w(serv_prov_info[i].pwszName));
|
||||
+ trace("Found guid: %s\n", wine_dbgstr_guid(&serv_prov_info[i].guid));
|
||||
+ }
|
||||
+
|
||||
+ ok(HeapFree(GetProcessHeap(), 0, serv_prov_info), "Failed freeing server provider info\n");
|
||||
+
|
||||
+ size = 0;
|
||||
+ items = 0;
|
||||
+
|
||||
+ hr = IDirectPlay8Server_EnumServiceProviders(server, &CLSID_DP8SP_TCPIP, NULL, NULL, &size, &items, 0);
|
||||
+ ok(hr == DPNERR_BUFFERTOOSMALL, "IDirectPlay8Server_EnumServiceProviders failed with %x\n", hr);
|
||||
+ ok(size != 0, "size is unexpectedly 0\n");
|
||||
+
|
||||
+ serv_prov_info = HeapAlloc(GetProcessHeap(), 0, size);
|
||||
+
|
||||
+ hr = IDirectPlay8Server_EnumServiceProviders(server, &CLSID_DP8SP_TCPIP, NULL, serv_prov_info, &size, &items, 0);
|
||||
+ ok(hr == S_OK, "IDirectPlay8Server_EnumServiceProviders failed with %x\n", hr);
|
||||
+ ok(items != 0, "Found unexpectedly no adapter\n");
|
||||
+
|
||||
+
|
||||
+ for (i=0;i<items;i++)
|
||||
+ {
|
||||
+ trace("Found adapter: %s\n", wine_dbgstr_w(serv_prov_info[i].pwszName));
|
||||
+ trace("Found adapter guid: %s\n", wine_dbgstr_guid(&serv_prov_info[i].guid));
|
||||
+ }
|
||||
+
|
||||
+ /* Invalid GUID */
|
||||
+ items = 88;
|
||||
+ hr = IDirectPlay8Server_EnumServiceProviders(server, &appguid, NULL, serv_prov_info, &size, &items, 0);
|
||||
+ ok(hr == DPNERR_DOESNOTEXIST, "IDirectPlay8Peer_EnumServiceProviders failed with %x\n", hr);
|
||||
+ ok(items == 88, "Found adapter %d\n", items);
|
||||
+
|
||||
+ HeapFree(GetProcessHeap(), 0, serv_prov_info);
|
||||
+ IDirectPlay8Server_Release(server);
|
||||
+}
|
||||
+
|
||||
BOOL is_process_elevated(void)
|
||||
{
|
||||
HANDLE token;
|
||||
@@ -398,6 +483,7 @@ START_TEST(server)
|
||||
|
||||
create_server();
|
||||
test_server_info();
|
||||
+ test_enum_service_providers();
|
||||
|
||||
CoUninitialize();
|
||||
|
||||
--
|
||||
2.30.2
|
||||
|
1
patches/dpnet-Server-EnumServiceProviders/definition
Normal file
1
patches/dpnet-Server-EnumServiceProviders/definition
Normal file
@ -0,0 +1 @@
|
||||
Fixes: [51221] dpnet: Impelment IDirectPlay8Server EnumServiceProviders.
|
@ -116,6 +116,7 @@ patch_enable_all ()
|
||||
enable_dinput_joy_mappings="$1"
|
||||
enable_dinput_reconnect_joystick="$1"
|
||||
enable_dinput_remap_joystick="$1"
|
||||
enable_dpnet_Server_EnumServiceProviders="$1"
|
||||
enable_dsound_EAX="$1"
|
||||
enable_dsound_Fast_Mixer="$1"
|
||||
enable_dwrite_FontFallback="$1"
|
||||
@ -394,6 +395,9 @@ patch_enable ()
|
||||
dinput-remap-joystick)
|
||||
enable_dinput_remap_joystick="$2"
|
||||
;;
|
||||
dpnet-Server-EnumServiceProviders)
|
||||
enable_dpnet_Server_EnumServiceProviders="$2"
|
||||
;;
|
||||
dsound-EAX)
|
||||
enable_dsound_EAX="$2"
|
||||
;;
|
||||
@ -1902,6 +1906,18 @@ if test "$enable_dinput_remap_joystick" -eq 1; then
|
||||
patch_apply dinput-remap-joystick/0001-dinput-Allow-remapping-of-joystick-buttons.patch
|
||||
fi
|
||||
|
||||
# Patchset dpnet-Server-EnumServiceProviders
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#51221] dpnet: Impelment IDirectPlay8Server EnumServiceProviders.
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/dpnet/server.c, dlls/dpnet/tests/server.c
|
||||
# |
|
||||
if test "$enable_dpnet_Server_EnumServiceProviders" -eq 1; then
|
||||
patch_apply dpnet-Server-EnumServiceProviders/0001-dpnet-Implement-IDirectPlay8Server-EnumServicePro.patch
|
||||
fi
|
||||
|
||||
# Patchset dsound-Fast_Mixer
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
|
Loading…
Reference in New Issue
Block a user