Huw Davies : msxml3: Support both v 2.x and 3. 0 version independent clsids as well as the v 3.0 version dependent clsid.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Nov 14 05:14:23 CST 2006


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

Author: Huw Davies <huw at codeweavers.com>
Date:   Mon Nov 13 15:49:49 2006 +0000

msxml3: Support both v 2.x and 3.0 version independent clsids as well as the v 3.0 version dependent clsid.

---

 dlls/msxml3/factory.c |    4 +++-
 dlls/msxml3/regsvr.c  |   31 +++++++++++++++++++++++++++++++
 2 files changed, 34 insertions(+), 1 deletions(-)

diff --git a/dlls/msxml3/factory.c b/dlls/msxml3/factory.c
index 3d042bc..53d59d1 100644
--- a/dlls/msxml3/factory.c
+++ b/dlls/msxml3/factory.c
@@ -141,7 +141,9 @@ HRESULT WINAPI DllGetClassObject( REFCLS
 
     TRACE("%s %s %p\n", debugstr_guid(rclsid), debugstr_guid(iid), ppv );
 
-    if( IsEqualGUID( rclsid, &CLSID_DOMDocument ) )
+    if( IsEqualGUID( rclsid, &CLSID_DOMDocument ) ||   /* Version indep. v 2.x */
+        IsEqualGUID( rclsid, &CLSID_DOMDocument2 ) ||  /* Version indep. v 3.0 */
+        IsEqualGUID( rclsid, &CLSID_DOMDocument30 ) )  /* Version dep.   v 3.0 */
         cf = (IClassFactory*) &domdoccf.lpVtbl;
 
     if ( !cf )
diff --git a/dlls/msxml3/regsvr.c b/dlls/msxml3/regsvr.c
index efdbd7d..3686590 100644
--- a/dlls/msxml3/regsvr.c
+++ b/dlls/msxml3/regsvr.c
@@ -31,6 +31,11 @@ #include "ole2.h"
 #include "msxml.h"
 #include "xmldom.h"
 #include "xmldso.h"
+#include "msxml2.h"
+
+/* undef the #define in msxml2 so that we can access the v.2 version
+   independent CLSID as well as the v.3 one. */
+#undef CLSID_DOMDocument
 
 #include "msxml_private.h"
 
@@ -529,6 +534,22 @@ static struct regsvr_coclass const cocla
 	"Microsoft.XMLDOM",
 	"1.0"
     },
+    {   &CLSID_DOMDocument2,
+        "XML DOM Document",
+        NULL,
+        "msxml3.dll",
+        "Both",
+        "Msxml2.DOMDocument",
+        "3.0"
+    },
+    {   &CLSID_DOMDocument30,
+        "XML DOM Document 3.0",
+        NULL,
+        "msxml3.dll",
+        "Both",
+        "Msxml2.DOMDocument",
+        "3.0"
+    },
     {   &CLSID_DOMFreeThreadedDocument,
 	"Free threaded XML DOM Document",
 	NULL,
@@ -589,6 +610,16 @@ static struct progid const progid_list[]
 	&CLSID_DOMDocument,
 	"Microsoft.XMLDOM.1.0"
     },
+    {   "Msxml2.DOMDocument",
+        "XML DOM Document",
+        &CLSID_DOMDocument2,
+        "Msxml2.DOMDocument.3.0"
+    },
+    {   "Msxml2.DOMDocument.3.0",
+        "XML DOM Document 3.0",
+        &CLSID_DOMDocument30,
+        NULL
+    },
     {   "Microsoft.FreeThreadedXMLDOM",
 	"Free threaded XML DOM Document",
 	&CLSID_DOMFreeThreadedDocument,




More information about the wine-cvs mailing list