[8/9] webservices: Implement WsGetChannelProperty and WsSetChannelProperty.

Hans Leidekker hans at codeweavers.com
Wed Apr 13 06:49:45 CDT 2016


Signed-off-by: Hans Leidekker <hans at codeweavers.com>
---
 dlls/webservices/channel.c        | 37 +++++++++++++++++++++++++++++++++++++
 dlls/webservices/webservices.spec |  4 ++--
 2 files changed, 39 insertions(+), 2 deletions(-)

diff --git a/dlls/webservices/channel.c b/dlls/webservices/channel.c
index c8a920d..54e159d 100644
--- a/dlls/webservices/channel.c
+++ b/dlls/webservices/channel.c
@@ -78,6 +78,15 @@ static HRESULT set_channel_prop( struct channel *channel, WS_CHANNEL_PROPERTY_ID
     return S_OK;
 }
 
+static HRESULT get_channel_prop( struct channel *channel, WS_CHANNEL_PROPERTY_ID id, void *buf, ULONG size )
+{
+    if (id >= channel->prop_count || size != channel_props[id].size)
+        return E_INVALIDARG;
+
+    memcpy( buf, channel->prop[id].value, channel->prop[id].valueSize );
+    return S_OK;
+}
+
 void free_channel( struct channel *channel )
 {
     heap_free( channel );
@@ -156,3 +165,31 @@ void WINAPI WsFreeChannel( WS_CHANNEL *handle )
     TRACE( "%p\n", handle );
     free_channel( channel );
 }
+
+/**************************************************************************
+ *          WsGetChannelProperty		[webservices.@]
+ */
+HRESULT WINAPI WsGetChannelProperty( WS_CHANNEL *handle, WS_CHANNEL_PROPERTY_ID id, void *buf,
+                                     ULONG size, WS_ERROR *error )
+{
+    struct channel *channel = (struct channel *)handle;
+
+    TRACE( "%p %u %p %u %p\n", handle, id, buf, size, error );
+    if (error) FIXME( "ignoring error parameter\n" );
+
+    return get_channel_prop( channel, id, buf, size );
+}
+
+/**************************************************************************
+ *          WsSetChannelProperty		[webservices.@]
+ */
+HRESULT WINAPI WsSetChannelProperty( WS_CHANNEL *handle, WS_CHANNEL_PROPERTY_ID id, const void *value,
+                                     ULONG size, WS_ERROR *error )
+{
+    struct channel *channel = (struct channel *)handle;
+
+    TRACE( "%p %u %p %u\n", handle, id, value, size );
+    if (error) FIXME( "ignoring error parameter\n" );
+
+    return set_channel_prop( channel, id, value, size );
+}
diff --git a/dlls/webservices/webservices.spec b/dlls/webservices/webservices.spec
index 2ddda72..001b3ca 100644
--- a/dlls/webservices/webservices.spec
+++ b/dlls/webservices/webservices.spec
@@ -59,7 +59,7 @@
 @ stub WsFreeServiceHost
 @ stub WsFreeServiceProxy
 @ stdcall WsFreeWriter(ptr)
-@ stub WsGetChannelProperty
+@ stdcall WsGetChannelProperty(ptr long ptr long ptr)
 @ stub WsGetCustomHeader
 @ stub WsGetDictionary
 @ stdcall WsGetErrorProperty(ptr long ptr long)
@@ -145,7 +145,7 @@
 @ stub WsSendFaultMessageForError
 @ stub WsSendMessage
 @ stub WsSendReplyMessage
-@ stub WsSetChannelProperty
+@ stdcall WsSetChannelProperty(ptr long ptr long ptr)
 @ stdcall WsSetErrorProperty(ptr long ptr long)
 @ stub WsSetFaultErrorDetail
 @ stub WsSetFaultErrorProperty
-- 
2.8.0.rc3




More information about the wine-patches mailing list