From 55b086b24e38e7f0bc0579daa433a9a7a895005e Mon Sep 17 00:00:00 2001 From: Hans Leidekker Date: Tue, 11 Nov 2008 10:17:38 +0100 Subject: [PATCH] inetcomm: Add an implementation of IVirtualStream. --- dlls/inetcomm/inetcomm_main.c | 5 +++++ dlls/inetcomm/inetcomm_private.h | 1 + dlls/inetcomm/mimeole.c | 10 ++++++++++ dlls/inetcomm/regsvr.c | 6 ++++++ 4 files changed, 22 insertions(+) diff --git a/dlls/inetcomm/inetcomm_main.c b/dlls/inetcomm/inetcomm_main.c index 1d71877782d..22f19197488 100644 --- a/dlls/inetcomm/inetcomm_main.c +++ b/dlls/inetcomm/inetcomm_main.c @@ -139,6 +139,7 @@ static cf mime_body_cf = { &cf_vtbl, MimeBody_create }; static cf mime_allocator_cf = { &cf_vtbl, MimeAllocator_create }; static cf mime_message_cf = { &cf_vtbl, MimeMessage_create }; static cf mime_security_cf = { &cf_vtbl, MimeSecurity_create }; +static cf virtual_stream_cf = { &cf_vtbl, VirtualStream_create }; /*********************************************************************** * DllGetClassObject (INETCOMM.@) @@ -177,6 +178,10 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv) { cf = (IClassFactory*) &mime_allocator_cf.lpVtbl; } + else if( IsEqualCLSID( rclsid, &CLSID_IVirtualStream )) + { + cf = (IClassFactory*) &virtual_stream_cf.lpVtbl; + } if ( !cf ) { diff --git a/dlls/inetcomm/inetcomm_private.h b/dlls/inetcomm/inetcomm_private.h index 589f92c3950..1d752c0d831 100644 --- a/dlls/inetcomm/inetcomm_private.h +++ b/dlls/inetcomm/inetcomm_private.h @@ -77,6 +77,7 @@ HRESULT MimeBody_create(IUnknown *outer, void **obj); HRESULT MimeAllocator_create(IUnknown *outer, void **obj); HRESULT MimeMessage_create(IUnknown *outer, void **obj); HRESULT MimeSecurity_create(IUnknown *outer, void **obj); +HRESULT VirtualStream_create(IUnknown *outer, void **obj); HRESULT MimeInternational_Construct(IMimeInternational **internat); diff --git a/dlls/inetcomm/mimeole.c b/dlls/inetcomm/mimeole.c index 07aa6bd0de7..bcc08dc8ac8 100644 --- a/dlls/inetcomm/mimeole.c +++ b/dlls/inetcomm/mimeole.c @@ -2989,3 +2989,13 @@ HRESULT WINAPI MimeOleGetAllocator(IMimeAllocator **alloc) { return MimeAllocator_create(NULL, (void**)alloc); } + +HRESULT VirtualStream_create(IUnknown *outer, void **obj) +{ + FIXME("(%p, %p)\n", outer, obj); + + *obj = NULL; + if (outer) return CLASS_E_NOAGGREGATION; + + return MimeOleCreateVirtualStream((IStream **)obj); +} diff --git a/dlls/inetcomm/regsvr.c b/dlls/inetcomm/regsvr.c index 4c7310cc172..8ac982e85dd 100644 --- a/dlls/inetcomm/regsvr.c +++ b/dlls/inetcomm/regsvr.c @@ -464,6 +464,12 @@ static struct regsvr_coclass const coclass_list[] = { "inetcomm.dll", "Both" }, + { &CLSID_IVirtualStream, + "CLSID_IVirtualStream", + NULL, + "inetcomm.dll", + "Both" + }, { NULL } /* list terminator */ }; -- 2.11.4.GIT