Hans Leidekker : inetcomm: Advertise support for a couple more interfaces.

Alexandre Julliard julliard at winehq.org
Tue Nov 4 07:29:31 CST 2008


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

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Tue Nov  4 11:35:07 2008 +0100

inetcomm: Advertise support for a couple more interfaces.

---

 dlls/inetcomm/inetcomm_main.c    |   21 +++++++++++++++++++-
 dlls/inetcomm/inetcomm_private.h |    4 +++
 dlls/inetcomm/mimeole.c          |   40 +++++++++++++++++++++++--------------
 dlls/inetcomm/regsvr.c           |   12 +++++++++++
 include/imnxport.idl             |    1 +
 include/mimeole.idl              |    2 +
 6 files changed, 64 insertions(+), 16 deletions(-)

diff --git a/dlls/inetcomm/inetcomm_main.c b/dlls/inetcomm/inetcomm_main.c
index cd412d2..1d71877 100644
--- a/dlls/inetcomm/inetcomm_main.c
+++ b/dlls/inetcomm/inetcomm_main.c
@@ -137,6 +137,8 @@ static const struct IClassFactoryVtbl cf_vtbl =
 
 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 };
 
 /***********************************************************************
  *              DllGetClassObject (INETCOMM.@)
@@ -147,10 +149,27 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv)
 
     TRACE("%s %s %p\n", debugstr_guid(rclsid), debugstr_guid(iid), ppv );
 
+    if (IsEqualCLSID(rclsid, &CLSID_ISMTPTransport))
+        return SMTPTransportCF_Create(iid, ppv);
+
+    if (IsEqualCLSID(rclsid, &CLSID_ISMTPTransport2))
+        return SMTPTransportCF_Create(iid, ppv);
+
     if (IsEqualCLSID(rclsid, &CLSID_IIMAPTransport))
         return IMAPTransportCF_Create(iid, ppv);
 
-    if( IsEqualCLSID( rclsid, &CLSID_IMimeBody ))
+    if (IsEqualCLSID(rclsid, &CLSID_IPOP3Transport))
+        return POP3TransportCF_Create(iid, ppv);
+
+    if ( IsEqualCLSID( rclsid, &CLSID_IMimeSecurity ))
+    {
+        cf = (IClassFactory*) &mime_security_cf.lpVtbl;
+    }
+    else if( IsEqualCLSID( rclsid, &CLSID_IMimeMessage ))
+    {
+        cf = (IClassFactory*) &mime_message_cf.lpVtbl;
+    }
+    else if( IsEqualCLSID( rclsid, &CLSID_IMimeBody ))
     {
         cf = (IClassFactory*) &mime_body_cf.lpVtbl;
     }
diff --git a/dlls/inetcomm/inetcomm_private.h b/dlls/inetcomm/inetcomm_private.h
index 7752d69..589f92c 100644
--- a/dlls/inetcomm/inetcomm_private.h
+++ b/dlls/inetcomm/inetcomm_private.h
@@ -75,7 +75,11 @@ void InternetTransport_UnregisterClass(HINSTANCE hInstance);
 
 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 MimeInternational_Construct(IMimeInternational **internat);
 
+HRESULT SMTPTransportCF_Create(REFIID riid, LPVOID *ppv);
 HRESULT IMAPTransportCF_Create(REFIID riid, LPVOID *ppv);
+HRESULT POP3TransportCF_Create(REFIID riid, LPVOID *ppv);
diff --git a/dlls/inetcomm/mimeole.c b/dlls/inetcomm/mimeole.c
index 10c6685..07aa6bd 100644
--- a/dlls/inetcomm/mimeole.c
+++ b/dlls/inetcomm/mimeole.c
@@ -2540,22 +2540,19 @@ static const IMimeMessageVtbl MimeMessageVtbl =
     MimeMessage_GetRootMoniker,
 };
 
-/***********************************************************************
- *              MimeOleCreateMessage (INETCOMM.@)
- */
-HRESULT WINAPI MimeOleCreateMessage(IUnknown *pUnkOuter, IMimeMessage **ppMessage)
+HRESULT MimeMessage_create(IUnknown *outer, void **obj)
 {
     MimeMessage *This;
 
-    TRACE("(%p, %p)\n", pUnkOuter, ppMessage);
+    TRACE("(%p, %p)\n", outer, obj);
 
-    if (pUnkOuter)
+    if (outer)
     {
         FIXME("outer unknown not supported yet\n");
         return E_NOTIMPL;
     }
 
-    *ppMessage = NULL;
+    *obj = NULL;
 
     This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This));
     if (!This) return E_OUTOFMEMORY;
@@ -2566,11 +2563,20 @@ HRESULT WINAPI MimeOleCreateMessage(IUnknown *pUnkOuter, IMimeMessage **ppMessag
     list_init(&This->body_tree);
     This->next_hbody = (HBODY)1;
 
-    *ppMessage = (IMimeMessage *)&This->lpVtbl;
+    *obj = (IMimeMessage *)&This->lpVtbl;
     return S_OK;
 }
 
 /***********************************************************************
+ *              MimeOleCreateMessage (INETCOMM.@)
+ */
+HRESULT WINAPI MimeOleCreateMessage(IUnknown *pUnkOuter, IMimeMessage **ppMessage)
+{
+    TRACE("(%p, %p)\n", pUnkOuter, ppMessage);
+    return MimeMessage_create(NULL, (void **)ppMessage);
+}
+
+/***********************************************************************
  *              MimeOleSetCompatMode (INETCOMM.@)
  */
 HRESULT WINAPI MimeOleSetCompatMode(DWORD dwMode)
@@ -2754,16 +2760,13 @@ static const IMimeSecurityVtbl MimeSecurityVtbl =
     MimeSecurity_GetCertData
 };
 
-/***********************************************************************
- *              MimeOleCreateSecurity (INETCOMM.@)
- */
-HRESULT WINAPI MimeOleCreateSecurity(IMimeSecurity **ppSecurity)
+HRESULT MimeSecurity_create(IUnknown *outer, void **obj)
 {
     MimeSecurity *This;
 
-    TRACE("(%p)\n", ppSecurity);
+    *obj = NULL;
 
-    *ppSecurity = NULL;
+    if (outer) return CLASS_E_NOAGGREGATION;
 
     This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This));
     if (!This) return E_OUTOFMEMORY;
@@ -2771,10 +2774,17 @@ HRESULT WINAPI MimeOleCreateSecurity(IMimeSecurity **ppSecurity)
     This->lpVtbl = &MimeSecurityVtbl;
     This->refs = 1;
 
-    *ppSecurity = (IMimeSecurity *)&This->lpVtbl;
+    *obj = (IMimeSecurity *)&This->lpVtbl;
     return S_OK;
 }
 
+/***********************************************************************
+ *              MimeOleCreateSecurity (INETCOMM.@)
+ */
+HRESULT WINAPI MimeOleCreateSecurity(IMimeSecurity **ppSecurity)
+{
+    return MimeSecurity_create(NULL, (void **)ppSecurity);
+}
 
 typedef struct
 {
diff --git a/dlls/inetcomm/regsvr.c b/dlls/inetcomm/regsvr.c
index a21b85b..4c7310c 100644
--- a/dlls/inetcomm/regsvr.c
+++ b/dlls/inetcomm/regsvr.c
@@ -404,6 +404,12 @@ static struct regsvr_coclass const coclass_list[] = {
 	"inetcomm.dll",
 	"Both"
     },
+    {   &CLSID_ISMTPTransport2,
+    "CLSID_ISMTPTransport2",
+    NULL,
+    "inetcomm.dll",
+    "Both"
+    },
     {   &CLSID_IPOP3Transport,
 	"CLSID_IPOP3Transport",
 	NULL,
@@ -452,6 +458,12 @@ static struct regsvr_coclass const coclass_list[] = {
         "inetcomm.dll",
         "Both"
     },
+    {   &CLSID_IMimeSecurity,
+        "CLSID_IMimeSecurity",
+        NULL,
+        "inetcomm.dll",
+        "Both"
+    },
     { NULL }			/* list terminator */
 };
 
diff --git a/include/imnxport.idl b/include/imnxport.idl
index 3b0e1c8..ef4f8ac 100644
--- a/include/imnxport.idl
+++ b/include/imnxport.idl
@@ -27,6 +27,7 @@ interface IIMAPTransport;
 
 cpp_quote("DEFINE_GUID(CLSID_IInternetMessageUrl, 0xca30cc91, 0xb1b3, 0x11d0, 0x85, 0xd0, 0x00, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
 cpp_quote("DEFINE_GUID(CLSID_ISMTPTransport, 0xfd853ce6, 0x7f86, 0x11d0, 0x82, 0x52, 0x00, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
+cpp_quote("DEFINE_GUID(CLSID_ISMTPTransport2, 0xdf2c7eC, 0x3435, 0x11d0, 0x81, 0xd0, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
 cpp_quote("DEFINE_GUID(CLSID_IPOP3Transport, 0xfd853ce7, 0x7f86, 0x11d0, 0x82, 0x52, 0x00, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
 cpp_quote("DEFINE_GUID(CLSID_INNTPTransport, 0xfd853ce8, 0x7f86, 0x11d0, 0x82, 0x52, 0x00, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
 cpp_quote("DEFINE_GUID(CLSID_IRASTransport, 0xfd853ce9, 0x7f86, 0x11d0, 0x82, 0x52, 0x00, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
diff --git a/include/mimeole.idl b/include/mimeole.idl
index 487b9fc..d74cdb5 100644
--- a/include/mimeole.idl
+++ b/include/mimeole.idl
@@ -32,6 +32,8 @@ interface IMimeEnumProperties;
 cpp_quote("DEFINE_GUID(CLSID_IMimeBody,      0xfd853cdb, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
 cpp_quote("DEFINE_GUID(CLSID_IMimeAllocator, 0xfd853cdd, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
 cpp_quote("DEFINE_GUID(CLSID_IMimeMessage,   0xfd853ce3, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
+cpp_quote("DEFINE_GUID(CLSID_IMimeSecurity,  0xfd853cde, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
+cpp_quote("DEFINE_GUID(CLSID_IVirtualStream, 0xfd853cdf, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
 
 cpp_quote("#define MIME_E_REG_CREATE_KEY         0x800cce01")
 cpp_quote("#define MIME_E_REG_QUERY_INFO         0x800cce02")




More information about the wine-cvs mailing list