Alistair Leslie-Hughes : dpnet: Implement IDirectPlay8Client EnumServiceProviders.

Alexandre Julliard julliard at winehq.org
Mon Feb 13 15:24:39 CST 2017


Module: wine
Branch: master
Commit: bc85fee0f162aa468dc9946dc41b6cb074fc586c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=bc85fee0f162aa468dc9946dc41b6cb074fc586c

Author: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date:   Thu Feb  9 06:45:53 2017 +0000

dpnet: Implement IDirectPlay8Client EnumServiceProviders.

Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/dpnet/client.c        | 14 +++++++++++---
 dlls/dpnet/dpnet_private.h |  2 ++
 dlls/dpnet/peer.c          |  2 +-
 dlls/dpnet/tests/client.c  | 16 ++++++++--------
 4 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/dlls/dpnet/client.c b/dlls/dpnet/client.c
index 1fa825f..d1e6b3b 100644
--- a/dlls/dpnet/client.c
+++ b/dlls/dpnet/client.c
@@ -124,9 +124,17 @@ static HRESULT WINAPI IDirectPlay8ClientImpl_EnumServiceProviders(IDirectPlay8Cl
         DPN_SERVICE_PROVIDER_INFO * const pSPInfoBuffer, PDWORD const pcbEnumData,
         PDWORD const pcReturned, const DWORD dwFlags)
 {
-  IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface);
-  FIXME("(%p):(%x): Stub\n", This, dwFlags);
-  return DPN_OK; 
+    IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface);
+    TRACE("(%p)->(%s,%s,%p,%p,%p,%x)\n", This, debugstr_guid(pguidServiceProvider), debugstr_guid(pguidApplication),
+                                             pSPInfoBuffer, pcbEnumData, pcReturned, dwFlags);
+
+    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 IDirectPlay8ClientImpl_EnumHosts(IDirectPlay8Client *iface,
diff --git a/dlls/dpnet/dpnet_private.h b/dlls/dpnet/dpnet_private.h
index 89e0777..256e3f4 100644
--- a/dlls/dpnet/dpnet_private.h
+++ b/dlls/dpnet/dpnet_private.h
@@ -137,6 +137,8 @@ extern HRESULT DPNET_CreateDirectPlay8LobbyClient(IClassFactory *iface, IUnknown
 
 extern void init_dpn_sp_caps(DPN_SP_CAPS *dpnspcaps) DECLSPEC_HIDDEN;
 extern void init_winsock(void) DECLSPEC_HIDDEN;
+extern HRESULT enum_services_providers(const GUID * const service, DPN_SERVICE_PROVIDER_INFO * const info_buffer,
+        DWORD * const buf_size, DWORD * const returned) DECLSPEC_HIDDEN;
 
 /* used for generic dumping (copied from ddraw) */
 typedef struct {
diff --git a/dlls/dpnet/peer.c b/dlls/dpnet/peer.c
index 461d610..57f15ef 100644
--- a/dlls/dpnet/peer.c
+++ b/dlls/dpnet/peer.c
@@ -126,7 +126,7 @@ static HRESULT WINAPI IDirectPlay8PeerImpl_Initialize(IDirectPlay8Peer *iface,
     return DPN_OK;
 }
 
-static HRESULT enum_services_providers(const GUID * const service, DPN_SERVICE_PROVIDER_INFO * const info_buffer,
+HRESULT enum_services_providers(const GUID * const service, DPN_SERVICE_PROVIDER_INFO * const info_buffer,
         DWORD * const buf_size, DWORD * const returned)
 {
     static const WCHAR serviceproviders[] = {'S','O','F','T','W','A','R','E','\\','M','i','c','r','o','s','o','f','t','\\',
diff --git a/dlls/dpnet/tests/client.c b/dlls/dpnet/tests/client.c
index bbd77fe..a1a1fa4 100644
--- a/dlls/dpnet/tests/client.c
+++ b/dlls/dpnet/tests/client.c
@@ -97,20 +97,20 @@ static void test_enum_service_providers(void)
     items = 0;
 
     hr = IDirectPlay8Client_EnumServiceProviders(client, NULL, NULL, NULL, &size, NULL, 0);
-    todo_wine ok(hr == E_POINTER, "IDirectPlay8Client_EnumServiceProviders failed with %x\n", hr);
+    ok(hr == E_POINTER, "IDirectPlay8Client_EnumServiceProviders failed with %x\n", hr);
 
     hr = IDirectPlay8Client_EnumServiceProviders(client, NULL, NULL, NULL, NULL, &items, 0);
-    todo_wine ok(hr == E_POINTER, "IDirectPlay8Client_EnumServiceProviders failed with %x\n", hr);
+    ok(hr == E_POINTER, "IDirectPlay8Client_EnumServiceProviders failed with %x\n", hr);
 
     hr = IDirectPlay8Client_EnumServiceProviders(client, NULL, NULL, NULL, &size, &items, 0);
-    todo_wine ok(hr == DPNERR_BUFFERTOOSMALL, "IDirectPlay8Client_EnumServiceProviders failed with %x\n", hr);
-    todo_wine ok(size != 0, "size is unexpectedly 0\n");
+    ok(hr == DPNERR_BUFFERTOOSMALL, "IDirectPlay8Client_EnumServiceProviders failed with %x\n", hr);
+    ok(size != 0, "size is unexpectedly 0\n");
 
     serv_prov_info = HeapAlloc(GetProcessHeap(), 0, size);
 
     hr = IDirectPlay8Client_EnumServiceProviders(client, NULL, NULL, serv_prov_info, &size, &items, 0);
     ok(hr == S_OK, "IDirectPlay8Client_EnumServiceProviders failed with %x\n", hr);
-    todo_wine ok(items != 0, "Found unexpectedly no service providers\n");
+    ok(items != 0, "Found unexpectedly no service providers\n");
 
     trace("number of items found: %d\n", items);
 
@@ -126,14 +126,14 @@ static void test_enum_service_providers(void)
     items = 0;
 
     hr = IDirectPlay8Client_EnumServiceProviders(client, &CLSID_DP8SP_TCPIP, NULL, NULL, &size, &items, 0);
-    todo_wine ok(hr == DPNERR_BUFFERTOOSMALL, "IDirectPlay8Client_EnumServiceProviders failed with %x\n", hr);
-    todo_wine ok(size != 0, "size is unexpectedly 0\n");
+    ok(hr == DPNERR_BUFFERTOOSMALL, "IDirectPlay8Client_EnumServiceProviders failed with %x\n", hr);
+    ok(size != 0, "size is unexpectedly 0\n");
 
     serv_prov_info = HeapAlloc(GetProcessHeap(), 0, size);
 
     hr = IDirectPlay8Client_EnumServiceProviders(client, &CLSID_DP8SP_TCPIP, NULL, serv_prov_info, &size, &items, 0);
     ok(hr == S_OK, "IDirectPlay8Client_EnumServiceProviders failed with %x\n", hr);
-    todo_wine ok(items != 0, "Found unexpectedly no adapter\n");
+    ok(items != 0, "Found unexpectedly no adapter\n");
 
 
     for (i=0;i<items;i++)




More information about the wine-cvs mailing list