diff --git a/dlls/webservices/webservices.spec b/dlls/webservices/webservices.spec index 5a2babafcac..42f5b635c41 100644 --- a/dlls/webservices/webservices.spec +++ b/dlls/webservices/webservices.spec @@ -187,7 +187,7 @@ @ stdcall WsWriteText(ptr ptr ptr) @ stub WsWriteType @ stub WsWriteValue -@ stub WsWriteXmlBuffer +@ stdcall WsWriteXmlBuffer(ptr ptr ptr) @ stub WsWriteXmlBufferToBytes @ stub WsWriteXmlnsAttribute @ stdcall WsXmlStringEquals(ptr ptr ptr) diff --git a/dlls/webservices/writer.c b/dlls/webservices/writer.c index d36793a28ba..398d65101d8 100644 --- a/dlls/webservices/writer.c +++ b/dlls/webservices/writer.c @@ -773,3 +773,22 @@ HRESULT WINAPI WsWriteText( WS_XML_WRITER *handle, const WS_XML_TEXT *text, WS_E elem->attributes[elem->attributeCount - 1]->value = (WS_XML_TEXT *)dst; return S_OK; } + +/************************************************************************** + * WsWriteXmlBuffer [webservices.@] + */ +HRESULT WINAPI WsWriteXmlBuffer( WS_XML_WRITER *handle, WS_XML_BUFFER *buffer, WS_ERROR *error ) +{ + struct writer *writer = (struct writer *)handle; + struct xmlbuf *xmlbuf = (struct xmlbuf *)buffer; + HRESULT hr; + + TRACE( "%p %p %p\n", handle, buffer, error ); + if (error) FIXME( "ignoring error parameter\n" ); + + if (!writer || !xmlbuf) return E_INVALIDARG; + + if ((hr = write_grow_buffer( writer, xmlbuf->size )) != S_OK) return hr; + write_bytes( writer, xmlbuf->ptr, xmlbuf->size ); + return S_OK; +}