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