[PATCH 1/2] dpwsockx: Implementation of GetCaps callback

Ismael Barros razielmine at gmail.com
Sun Sep 13 14:58:47 CDT 2009


---
 dlls/dpwsockx/dpwsockx_dll.h  |   16 ++++++++++++++++
 dlls/dpwsockx/dpwsockx_main.c |   29 +++++++++++++++++++++++++++--
 2 files changed, 43 insertions(+), 2 deletions(-)

diff --git a/dlls/dpwsockx/dpwsockx_dll.h b/dlls/dpwsockx/dpwsockx_dll.h
index a9454da..fa9ecec 100644
--- a/dlls/dpwsockx/dpwsockx_dll.h
+++ b/dlls/dpwsockx/dpwsockx_dll.h
@@ -26,6 +26,22 @@
 #include "wine/dplaysp.h"
 
 
+#define DPWS_MAXQUEUESIZE             0
+#define DPWS_HUNDREDBAUD              0
+#define DPWS_LATENCY                  500
+#define DPWS_MAXLOCALPLAYERS          65536
+#define DPWS_TIMEOUT                  5000
+#define DPWS_MAXBUFFERSIZE            65507
+#define DPWS_MAXPLAYERS               65536
+#define DPWS_GUARANTEED_MAXBUFFERSIZE 1048575
+#define DPWS_GUARANTEED_MAXPLAYERS    64
+
+#define DPWS_PORT_RANGE_START 2300
+#define DPWS_PORT_RANGE_END   2400
+#define DPWS_DPLAYSRV_PORT    47624
+
+
+
 typedef struct tagDPWS_THREADDATA
 {
     BOOL           is_running;
diff --git a/dlls/dpwsockx/dpwsockx_main.c b/dlls/dpwsockx/dpwsockx_main.c
index ff6f5b5..f4e571c 100644
--- a/dlls/dpwsockx/dpwsockx_main.c
+++ b/dlls/dpwsockx/dpwsockx_main.c
@@ -104,9 +104,34 @@ static HRESULT WINAPI DPWSCB_GetAddress( LPDPSP_GETADDRESSDATA data )
 
 static HRESULT WINAPI DPWSCB_GetCaps( LPDPSP_GETCAPSDATA data )
 {
-    FIXME( "(%d,%p,0x%08x,%p)\n",
+    TRACE( "(%d,%p,0x%08x,%p)\n",
            data->idPlayer, data->lpCaps, data->dwFlags, data->lpISP );
-    return DPERR_UNSUPPORTED;
+
+    data->lpCaps->dwFlags = ( DPCAPS_ASYNCSUPPORTED |
+                              DPCAPS_GUARANTEEDOPTIMIZED |
+                              DPCAPS_GUARANTEEDSUPPORTED );
+
+    data->lpCaps->dwMaxQueueSize    = DPWS_MAXQUEUESIZE;
+    data->lpCaps->dwHundredBaud     = DPWS_HUNDREDBAUD;
+    data->lpCaps->dwLatency         = DPWS_LATENCY;
+    data->lpCaps->dwMaxLocalPlayers = DPWS_MAXLOCALPLAYERS;
+    data->lpCaps->dwHeaderLength    = sizeof(DPSP_MSG_HEADER);
+    data->lpCaps->dwTimeout         = DPWS_TIMEOUT;
+
+    if ( data->dwFlags & DPGETCAPS_GUARANTEED )
+    {
+        data->lpCaps->dwMaxBufferSize = DPWS_GUARANTEED_MAXBUFFERSIZE;
+        data->lpCaps->dwMaxPlayers    = DPWS_GUARANTEED_MAXPLAYERS;
+    }
+    else
+    {
+        data->lpCaps->dwMaxBufferSize = DPWS_MAXBUFFERSIZE;
+        data->lpCaps->dwMaxPlayers    = DPWS_MAXPLAYERS;
+    }
+
+    data->lpCaps->dwMaxBufferSize -= sizeof(DPSP_MSG_HEADER);
+
+    return DP_OK;
 }
 
 static HRESULT WINAPI DPWSCB_Open( LPDPSP_OPENDATA data )
-- 
1.6.4.2




More information about the wine-patches mailing list