diff --git a/dlls/msxml3/Makefile.in b/dlls/msxml3/Makefile.in index 0e076ba966a..4d94bca4744 100644 --- a/dlls/msxml3/Makefile.in +++ b/dlls/msxml3/Makefile.in @@ -25,7 +25,6 @@ C_SRCS = \ parseerror.c \ pi.c \ queryresult.c \ - regsvr.c \ saxreader.c \ schema.c \ text.c \ @@ -43,5 +42,6 @@ RC_SRCS = \ version.rc IDL_TLB_SRCS = msxml3_v1.idl +IDL_R_SRCS = msxml3_v1.idl @MAKE_DLL_RULES@ diff --git a/dlls/msxml3/main.c b/dlls/msxml3/main.c index 1201d2bed7e..8e3a13be2b4 100644 --- a/dlls/msxml3/main.c +++ b/dlls/msxml3/main.c @@ -29,6 +29,7 @@ #include "winbase.h" #include "winuser.h" #include "ole2.h" +#include "rpcproxy.h" #include "msxml.h" #include "msxml6.h" @@ -243,3 +244,19 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv) } return TRUE; } + +/*********************************************************************** + * DllRegisterServer (MSXML3.@) + */ +HRESULT WINAPI DllRegisterServer(void) +{ + return __wine_register_resources( MSXML_hInstance, NULL ); +} + +/*********************************************************************** + * DllUnregisterServer (MSXML3.@) + */ +HRESULT WINAPI DllUnregisterServer(void) +{ + return __wine_unregister_resources( MSXML_hInstance, NULL ); +} diff --git a/dlls/msxml3/regsvr.c b/dlls/msxml3/regsvr.c deleted file mode 100644 index 50da4f2f4e3..00000000000 --- a/dlls/msxml3/regsvr.c +++ /dev/null @@ -1,707 +0,0 @@ -/* - * MSXML3 self-registerable dll functions - * - * Copyright (C) 2003 John K. Hohm - * Copyright (C) 2006 Robert Shearman - * Copyright (C) 2008 Alistair Leslie-Hughes - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "config.h" - -#include -#include - -#define COBJMACROS - -#include "windef.h" -#include "winbase.h" -#include "winuser.h" -#include "winreg.h" -#include "winerror.h" -#include "ole2.h" -#include "msxml.h" -#include "msxml6.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" - -#include "wine/debug.h" -#include "wine/unicode.h" - -WINE_DEFAULT_DEBUG_CHANNEL(msxml); - -/* - * Near the bottom of this file are the exported DllRegisterServer and - * DllUnregisterServer, which make all this worthwhile. - */ - -/*********************************************************************** - * interface for self-registering - */ -struct regsvr_interface -{ - IID const *iid; /* NULL for end of list */ - LPCSTR name; /* can be NULL to omit */ - IID const *base_iid; /* can be NULL to omit */ - int num_methods; /* can be <0 to omit */ - CLSID const *ps_clsid; /* can be NULL to omit */ - CLSID const *ps_clsid32; /* can be NULL to omit */ -}; - -static HRESULT register_interfaces(struct regsvr_interface const *list); -static HRESULT unregister_interfaces(struct regsvr_interface const *list); - -struct regsvr_coclass -{ - CLSID const *clsid; /* NULL for end of list */ - LPCSTR name; /* can be NULL to omit */ - LPCSTR ips; /* can be NULL to omit */ - LPCSTR ips32; /* can be NULL to omit */ - LPCSTR ips32_tmodel; /* can be NULL to omit */ - LPCSTR progid; /* can be NULL to omit */ - LPCSTR version; /* can be NULL to omit */ -}; - -static HRESULT register_coclasses(struct regsvr_coclass const *list); -static HRESULT unregister_coclasses(struct regsvr_coclass const *list); - -struct progid -{ - LPCSTR name; /* NULL for end of list */ - LPCSTR description; /* can be NULL to omit */ - CLSID const *clsid; - LPCSTR curver; /* can be NULL to omit */ -}; - -static HRESULT register_progids(struct progid const *list); -static HRESULT unregister_progids(struct progid const *list); - -/*********************************************************************** - * static string constants - */ -static WCHAR const interface_keyname[10] = { - 'I', 'n', 't', 'e', 'r', 'f', 'a', 'c', 'e', 0 }; -static WCHAR const base_ifa_keyname[14] = { - 'B', 'a', 's', 'e', 'I', 'n', 't', 'e', 'r', 'f', 'a', 'c', - 'e', 0 }; -static WCHAR const num_methods_keyname[11] = { - 'N', 'u', 'm', 'M', 'e', 't', 'h', 'o', 'd', 's', 0 }; -static WCHAR const ps_clsid_keyname[15] = { - 'P', 'r', 'o', 'x', 'y', 'S', 't', 'u', 'b', 'C', 'l', 's', - 'i', 'd', 0 }; -static WCHAR const ps_clsid32_keyname[17] = { - 'P', 'r', 'o', 'x', 'y', 'S', 't', 'u', 'b', 'C', 'l', 's', - 'i', 'd', '3', '2', 0 }; -static WCHAR const clsid_keyname[6] = { - 'C', 'L', 'S', 'I', 'D', 0 }; -static WCHAR const ips_keyname[13] = { - 'I', 'n', 'P', 'r', 'o', 'c', 'S', 'e', 'r', 'v', 'e', 'r', - 0 }; -static WCHAR const ips32_keyname[15] = { - 'I', 'n', 'P', 'r', 'o', 'c', 'S', 'e', 'r', 'v', 'e', 'r', - '3', '2', 0 }; -static WCHAR const progid_keyname[7] = { - 'P', 'r', 'o', 'g', 'I', 'D', 0 }; -static WCHAR const versionindependentprogid_keyname[] = { - 'V', 'e', 'r', 's', 'i', 'o', 'n', - 'I', 'n', 'd', 'e', 'p', 'e', 'n', 'd', 'e', 'n', 't', - 'P', 'r', 'o', 'g', 'I', 'D', 0 }; -static WCHAR const version_keyname[] = { - 'V', 'e', 'r', 's', 'i', 'o', 'n', 0 }; -static WCHAR const curver_keyname[] = { - 'C', 'u', 'r', 'V', 'e', 'r', 0 }; -static char const tmodel_valuename[] = "ThreadingModel"; - -/*********************************************************************** - * static helper functions - */ -static LONG register_key_guid(HKEY base, WCHAR const *name, GUID const *guid); -static LONG register_key_defvalueW(HKEY base, WCHAR const *name, - WCHAR const *value); -static LONG register_key_defvalueA(HKEY base, WCHAR const *name, - char const *value); - -/*********************************************************************** - * register_interfaces - */ -static HRESULT register_interfaces(struct regsvr_interface const *list) -{ - LONG res = ERROR_SUCCESS; - HKEY interface_key; - - res = RegCreateKeyExW(HKEY_CLASSES_ROOT, interface_keyname, 0, NULL, 0, - KEY_READ | KEY_WRITE, NULL, &interface_key, NULL); - if (res != ERROR_SUCCESS) goto error_return; - - for (; res == ERROR_SUCCESS && list->iid; ++list) { - WCHAR buf[39]; - HKEY iid_key; - - StringFromGUID2(list->iid, buf, 39); - res = RegCreateKeyExW(interface_key, buf, 0, NULL, 0, - KEY_READ | KEY_WRITE, NULL, &iid_key, NULL); - if (res != ERROR_SUCCESS) goto error_close_interface_key; - - if (list->name) { - res = RegSetValueExA(iid_key, NULL, 0, REG_SZ, - (CONST BYTE*)(list->name), - strlen(list->name) + 1); - if (res != ERROR_SUCCESS) goto error_close_iid_key; - } - - if (list->base_iid) { - res = register_key_guid(iid_key, base_ifa_keyname, list->base_iid); - if (res != ERROR_SUCCESS) goto error_close_iid_key; - } - - if (0 <= list->num_methods) { - static WCHAR const fmt[3] = { '%', 'd', 0 }; - HKEY key; - - res = RegCreateKeyExW(iid_key, num_methods_keyname, 0, NULL, 0, - KEY_READ | KEY_WRITE, NULL, &key, NULL); - if (res != ERROR_SUCCESS) goto error_close_iid_key; - - sprintfW(buf, fmt, list->num_methods); - res = RegSetValueExW(key, NULL, 0, REG_SZ, - (CONST BYTE*)buf, - (lstrlenW(buf) + 1) * sizeof(WCHAR)); - RegCloseKey(key); - - if (res != ERROR_SUCCESS) goto error_close_iid_key; - } - - if (list->ps_clsid) { - res = register_key_guid(iid_key, ps_clsid_keyname, list->ps_clsid); - if (res != ERROR_SUCCESS) goto error_close_iid_key; - } - - if (list->ps_clsid32) { - res = register_key_guid(iid_key, ps_clsid32_keyname, list->ps_clsid32); - if (res != ERROR_SUCCESS) goto error_close_iid_key; - } - - error_close_iid_key: - RegCloseKey(iid_key); - } - -error_close_interface_key: - RegCloseKey(interface_key); -error_return: - return res != ERROR_SUCCESS ? HRESULT_FROM_WIN32(res) : S_OK; -} - -/*********************************************************************** - * unregister_interfaces - */ -static HRESULT unregister_interfaces(struct regsvr_interface const *list) -{ - LONG res = ERROR_SUCCESS; - HKEY interface_key; - - res = RegOpenKeyExW(HKEY_CLASSES_ROOT, interface_keyname, 0, - KEY_READ | KEY_WRITE, &interface_key); - if (res == ERROR_FILE_NOT_FOUND) return S_OK; - if (res != ERROR_SUCCESS) goto error_return; - - for (; res == ERROR_SUCCESS && list->iid; ++list) { - WCHAR buf[39]; - - StringFromGUID2(list->iid, buf, 39); - res = RegDeleteTreeW(interface_key, buf); - if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; - } - - RegCloseKey(interface_key); -error_return: - return res != ERROR_SUCCESS ? HRESULT_FROM_WIN32(res) : S_OK; -} - -/*********************************************************************** - * register_coclasses - */ -static HRESULT register_coclasses(struct regsvr_coclass const *list) -{ - LONG res = ERROR_SUCCESS; - HKEY coclass_key; - - res = RegCreateKeyExW(HKEY_CLASSES_ROOT, clsid_keyname, 0, NULL, 0, - KEY_READ | KEY_WRITE, NULL, &coclass_key, NULL); - if (res != ERROR_SUCCESS) goto error_return; - - for (; res == ERROR_SUCCESS && list->clsid; ++list) { - WCHAR buf[39]; - HKEY clsid_key; - - StringFromGUID2(list->clsid, buf, 39); - res = RegCreateKeyExW(coclass_key, buf, 0, NULL, 0, - KEY_READ | KEY_WRITE, NULL, &clsid_key, NULL); - if (res != ERROR_SUCCESS) goto error_close_coclass_key; - - if (list->name) { - res = RegSetValueExA(clsid_key, NULL, 0, REG_SZ, - (CONST BYTE*)(list->name), - strlen(list->name) + 1); - if (res != ERROR_SUCCESS) goto error_close_clsid_key; - } - - if (list->ips) { - res = register_key_defvalueA(clsid_key, ips_keyname, list->ips); - if (res != ERROR_SUCCESS) goto error_close_clsid_key; - } - - if (list->ips32) { - HKEY ips32_key; - - res = RegCreateKeyExW(clsid_key, ips32_keyname, 0, NULL, 0, - KEY_READ | KEY_WRITE, NULL, - &ips32_key, NULL); - if (res != ERROR_SUCCESS) goto error_close_clsid_key; - - res = RegSetValueExA(ips32_key, NULL, 0, REG_SZ, - (CONST BYTE*)list->ips32, - lstrlenA(list->ips32) + 1); - if (res == ERROR_SUCCESS && list->ips32_tmodel) - res = RegSetValueExA(ips32_key, tmodel_valuename, 0, REG_SZ, - (CONST BYTE*)list->ips32_tmodel, - strlen(list->ips32_tmodel) + 1); - RegCloseKey(ips32_key); - if (res != ERROR_SUCCESS) goto error_close_clsid_key; - } - - if (list->progid) { - char *buffer = NULL; - LPCSTR progid; - - if (list->version) { - buffer = HeapAlloc(GetProcessHeap(), 0, strlen(list->progid) + strlen(list->version) + 2); - if (!buffer) { - res = ERROR_OUTOFMEMORY; - goto error_close_clsid_key; - } - strcpy(buffer, list->progid); - strcat(buffer, "."); - strcat(buffer, list->version); - progid = buffer; - } else - progid = list->progid; - res = register_key_defvalueA(clsid_key, progid_keyname, - progid); - HeapFree(GetProcessHeap(), 0, buffer); - if (res != ERROR_SUCCESS) goto error_close_clsid_key; - - if (list->version) { - res = register_key_defvalueA(clsid_key, versionindependentprogid_keyname, - list->progid); - if (res != ERROR_SUCCESS) goto error_close_clsid_key; - } - } - - if (list->version) { - res = register_key_defvalueA(clsid_key, version_keyname, - list->version); - if (res != ERROR_SUCCESS) goto error_close_clsid_key; - } - - error_close_clsid_key: - RegCloseKey(clsid_key); - } - -error_close_coclass_key: - RegCloseKey(coclass_key); -error_return: - return res != ERROR_SUCCESS ? HRESULT_FROM_WIN32(res) : S_OK; -} - -/*********************************************************************** - * unregister_coclasses - */ -static HRESULT unregister_coclasses(struct regsvr_coclass const *list) -{ - LONG res = ERROR_SUCCESS; - HKEY coclass_key; - - res = RegOpenKeyExW(HKEY_CLASSES_ROOT, clsid_keyname, 0, - KEY_READ | KEY_WRITE, &coclass_key); - if (res == ERROR_FILE_NOT_FOUND) return S_OK; - if (res != ERROR_SUCCESS) goto error_return; - - for (; res == ERROR_SUCCESS && list->clsid; ++list) { - WCHAR buf[39]; - - StringFromGUID2(list->clsid, buf, 39); - res = RegDeleteTreeW(coclass_key, buf); - if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; - if (res != ERROR_SUCCESS) goto error_close_coclass_key; - } - -error_close_coclass_key: - RegCloseKey(coclass_key); -error_return: - return res != ERROR_SUCCESS ? HRESULT_FROM_WIN32(res) : S_OK; -} - -/*********************************************************************** - * register_progids - */ -static HRESULT register_progids(struct progid const *list) -{ - LONG res = ERROR_SUCCESS; - - for (; res == ERROR_SUCCESS && list->name; ++list) { - WCHAR buf[39]; - HKEY progid_key; - - res = RegCreateKeyExA(HKEY_CLASSES_ROOT, list->name, 0, - NULL, 0, KEY_READ | KEY_WRITE, NULL, - &progid_key, NULL); - if (res != ERROR_SUCCESS) goto error_close_clsid_key; - - res = RegSetValueExA(progid_key, NULL, 0, REG_SZ, - (CONST BYTE*)list->description, - strlen(list->description) + 1); - if (res != ERROR_SUCCESS) goto error_close_clsid_key; - - StringFromGUID2(list->clsid, buf, 39); - - res = register_key_defvalueW(progid_key, clsid_keyname, buf); - if (res != ERROR_SUCCESS) goto error_close_clsid_key; - - if (list->curver) { - res = register_key_defvalueA(progid_key, curver_keyname, list->curver); - if (res != ERROR_SUCCESS) goto error_close_clsid_key; - } - - error_close_clsid_key: - RegCloseKey(progid_key); - } - - return res != ERROR_SUCCESS ? HRESULT_FROM_WIN32(res) : S_OK; -} - -/*********************************************************************** - * unregister_progids - */ -static HRESULT unregister_progids(struct progid const *list) -{ - LONG res = ERROR_SUCCESS; - - for (; res == ERROR_SUCCESS && list->name; ++list) { - res = RegDeleteTreeA(HKEY_CLASSES_ROOT, list->name); - if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; - } - - return res != ERROR_SUCCESS ? HRESULT_FROM_WIN32(res) : S_OK; -} - -/*********************************************************************** - * regsvr_key_guid - */ -static LONG register_key_guid(HKEY base, WCHAR const *name, GUID const *guid) -{ - WCHAR buf[39]; - - StringFromGUID2(guid, buf, 39); - return register_key_defvalueW(base, name, buf); -} - -/*********************************************************************** - * regsvr_key_defvalueW - */ -static LONG register_key_defvalueW( - HKEY base, - WCHAR const *name, - WCHAR const *value) -{ - LONG res; - HKEY key; - - res = RegCreateKeyExW(base, name, 0, NULL, 0, - KEY_READ | KEY_WRITE, NULL, &key, NULL); - if (res != ERROR_SUCCESS) return res; - res = RegSetValueExW(key, NULL, 0, REG_SZ, (CONST BYTE*)value, - (lstrlenW(value) + 1) * sizeof(WCHAR)); - RegCloseKey(key); - return res; -} - -/*********************************************************************** - * regsvr_key_defvalueA - */ -static LONG register_key_defvalueA( - HKEY base, - WCHAR const *name, - char const *value) -{ - LONG res; - HKEY key; - - res = RegCreateKeyExW(base, name, 0, NULL, 0, - KEY_READ | KEY_WRITE, NULL, &key, NULL); - if (res != ERROR_SUCCESS) return res; - res = RegSetValueExA(key, NULL, 0, REG_SZ, (CONST BYTE*)value, - lstrlenA(value) + 1); - RegCloseKey(key); - return res; -} - -/*********************************************************************** - * coclass list - */ -static struct regsvr_coclass const coclass_list[] = { - { &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_FreeThreadedDOMDocument, - "Free Threaded XML DOM Document", - NULL, - "msxml3.dll", - "Both", - "Microsoft.FreeThreadedXMLDOM.1.0", - "1.0" - }, - { &CLSID_FreeThreadedDOMDocument30, - "Free Threaded XML DOM Document 3.0", - NULL, - "msxml3.dll", - "Both", - "Microsoft.FreeThreadedDOMDocument.1.0", - "1.0" - }, - { &CLSID_XMLHTTP30, - "XML HTTP 3.0", - NULL, - "msxml3.dll", - "Apartment", - "Msxml2.XMLHTTP.3.0", - "3.0" - }, - { &CLSID_XMLDocument, - "Msxml", - NULL, - "msxml3.dll", - "Both", - "Msxml" - }, - { &CLSID_XMLSchemaCache, - "XML Schema Cache", - NULL, - "msxml3.dll", - "Both", - "Msxml2.XMLSchemaCache", - "3.0" - }, - { &CLSID_XMLSchemaCache30, - "XML Schema Cache 3.0", - NULL, - "msxml3.dll", - "Both", - "Msxml2.XMLSchemaCache", - "3.0" - }, - { &CLSID_SAXXMLReader, - "SAX XML Reader", - NULL, - "msxml3.dll", - "Both", - "Msxml2.SAXXMLReader", - "3.0" - }, - { &CLSID_SAXXMLReader30, - "SAX XML Reader 3.0", - NULL, - "msxml3.dll", - "Both", - "Msxml2.SAXXMLReader", - "3.0" - }, - { &CLSID_MXXMLWriter, - "IMXWriter interface", - NULL, - "msxml3.dll", - "Both", - "Msxml2.MXXMLWriter", - "3.0" - }, - { &CLSID_MXXMLWriter30, - "IMXWriter interface 3.0", - NULL, - "msxml3.dll", - "Both", - "Msxml2.MXXMLWriter", - "3.0" - }, - { &CLSID_SAXAttributes, - "SAX Attribute", - NULL, - "msxml3.dll", - "Both", - "Msxml2.SAXAttributes", - NULL - }, - { &CLSID_SAXAttributes30, - "SAX Attribute 3.0", - NULL, - "msxml3.dll", - "Both", - "Msxml2.SAXAttributes", - "3.0" - }, - { NULL } /* list terminator */ -}; - -/*********************************************************************** - * interface list - */ -static struct regsvr_interface const interface_list[] = { - { NULL } /* list terminator */ -}; - -/*********************************************************************** - * progid list - */ -static struct progid const progid_list[] = { - { "Msxml2.DOMDocument", - "XML DOM Document", - &CLSID_DOMDocument2, - "Msxml2.DOMDocument.3.0" - }, - { "Msxml2.DOMDocument.3.0", - "XML DOM Document 3.0", - &CLSID_DOMDocument30, - NULL - }, - { "MSXML.FreeThreadedDOMDocument30", - "Free threaded XML DOM Document 3.0", - &CLSID_FreeThreadedDOMDocument30, - NULL - }, - { "Msxml2.XMLHTTP.3.0", - "XML HTTP 3.0", - &CLSID_XMLHTTP30, - NULL - }, - { "Msxml", - "Msxml", - &CLSID_XMLDocument, - NULL - }, - { "Msxml2.XMLSchemaCache", - "XML Schema Cache", - &CLSID_XMLSchemaCache, - "Msxml2.XMLSchemaCache.3.0" - }, - { "Msxml2.XMLSchemaCache.3.0", - "XML Schema Cache 3.0", - &CLSID_XMLSchemaCache30, - NULL - }, - { "Msxml2.SAXXMLReader", - "SAX XML Reader", - &CLSID_SAXXMLReader, - "Msxml2.SAXXMLReader.3.0" - }, - { "Msxml2.SAXXMLReader.3.0", - "SAX XML Reader 3.0", - &CLSID_SAXXMLReader30, - NULL - }, - { "Msxml2.MXXMLWriter", - "MXXMLWriter", - &CLSID_MXXMLWriter, - "Msxml2.MXXMLWriter.3.0" - }, - { "Msxml2.MXXMLWriter.3.0", - "MXXMLWriter 3.0", - &CLSID_MXXMLWriter30, - NULL - }, - { "Msxml2.SAXAttributes", - "SAX Attribute", - &CLSID_SAXAttributes, - NULL - }, - { "Msxml2.SAXAttributes.3.0", - "SAX Attribute 3.0", - &CLSID_SAXAttributes30, - NULL - }, - { NULL } /* list terminator */ -}; - -/*********************************************************************** - * DllRegisterServer (MSXML3.@) - */ -HRESULT WINAPI DllRegisterServer(void) -{ - HRESULT hr; - ITypeLib *tl; - static const WCHAR wszMsXml3[] = {'m','s','x','m','l','3','.','d','l','l',0}; - - TRACE("\n"); - - hr = register_coclasses(coclass_list); - if (SUCCEEDED(hr)) - hr = register_interfaces(interface_list); - if (SUCCEEDED(hr)) - hr = register_progids(progid_list); - - if(SUCCEEDED(hr)) { - - hr = LoadTypeLibEx(wszMsXml3, REGKIND_REGISTER, &tl); - if(SUCCEEDED(hr)) - ITypeLib_Release(tl); - } - - return hr; -} - -/*********************************************************************** - * DllUnregisterServer (MSXML3.@) - */ -HRESULT WINAPI DllUnregisterServer(void) -{ - HRESULT hr; - - TRACE("\n"); - - hr = unregister_coclasses(coclass_list); - if (SUCCEEDED(hr)) - hr = unregister_interfaces(interface_list); - if (SUCCEEDED(hr)) - hr = unregister_progids(progid_list); - if (SUCCEEDED(hr)) - hr = UnRegisterTypeLib(&LIBID_MSXML2, 3, 0, LOCALE_SYSTEM_DEFAULT, SYS_WIN32); - - return hr; -} diff --git a/include/msxml2.idl b/include/msxml2.idl index 9d49f469df9..f9c10efcfc2 100644 --- a/include/msxml2.idl +++ b/include/msxml2.idl @@ -1515,15 +1515,6 @@ interface IXMLDOMParseErrorCollection : IDispatch HRESULT _newEnum( [retval, out] IUnknown **ppunk); } -[ - uuid(F6D90F11-9C73-11D3-B32E-00C04F990BB4) -] -coclass DOMDocument -{ - [default] interface IXMLDOMDocument2; - [default, source] dispinterface XMLDOMDocumentEvents; -} - [ uuid(f5078f1b-c551-11d3-89b9-0000f81fe221) ] @@ -1534,6 +1525,10 @@ coclass DOMDocument26 } [ + helpstring("XML DOM Document 3.0"), + progid("Msxml2.DOMDocument.3.0"), + vi_progid("Msxml2.DOMDocument"), + threading(both), uuid(f5078f32-c551-11d3-89b9-0000f81fe221) ] coclass DOMDocument30 @@ -1561,9 +1556,13 @@ coclass DOMDocument60 } [ - uuid(F6D90F12-9C73-11D3-B32E-00C04F990BB4) + helpstring("XML DOM Document"), + progid("Msxml2.DOMDocument"), + vi_progid("Msxml2.DOMDocument"), + threading(both), + uuid(f6d90f11-9c73-11d3-b32e-00c04f990bb4) ] -coclass FreeThreadedDOMDocument +coclass DOMDocument { [default] interface IXMLDOMDocument2; [default, source] dispinterface XMLDOMDocumentEvents; @@ -1579,6 +1578,10 @@ coclass FreeThreadedDOMDocument26 } [ + helpstring("Free threaded XML DOM Document 3.0"), + progid("Msxml2.FreeThreadedDOMDocument.3.0"), + vi_progid("Msxml2.FreeThreadedDOMDocument"), + threading(both), uuid(f5078f33-c551-11d3-89b9-0000f81fe221) ] coclass FreeThreadedDOMDocument30 @@ -1606,11 +1609,16 @@ coclass FreeThreadedDOMDocument60 } [ - uuid(f6d90f16-9c73-11d3-b32e-00c04f990bb4) + helpstring("Free threaded XML DOM Document"), + progid("Msxml2.FreeThreadedDOMDocument"), + vi_progid("Msxml2.FreeThreadedDOMDocument"), + threading(both), + uuid(f6d90f12-9c73-11d3-b32e-00c04f990bb4) ] -coclass XMLHTTP +coclass FreeThreadedDOMDocument { - [default] interface IXMLHTTPRequest; + [default] interface IXMLDOMDocument2; + [default, source] dispinterface XMLDOMDocumentEvents; } [ @@ -1622,6 +1630,10 @@ coclass XMLHTTP26 } [ + helpstring("XML HTTP 3.0"), + progid("Msxml2.XMLHTTP.3.0"), + vi_progid("Msxml2.XMLHTTP"), + threading(apartment), uuid(f5078f35-c551-11d3-89b9-0000f81fe221) ] coclass XMLHTTP30 @@ -1646,14 +1658,22 @@ coclass XMLHTTP60 } [ - uuid(afba6b42-5692-48ea-8141-dc517dcf0ef1) + helpstring("XML HTTP"), + progid("Msxml2.XMLHTTP"), + vi_progid("Msxml2.XMLHTTP"), + threading(apartment), + uuid(f6d90f16-9c73-11d3-b32e-00c04f990bb4) ] -coclass ServerXMLHTTP +coclass XMLHTTP { - [default] interface IServerXMLHTTPRequest; + [default] interface IXMLHTTPRequest; } [ + helpstring("Server XML HTTP 3.0"), + progid("Msxml2.ServerXMLHTTP.3.0"), + vi_progid("Msxml2.ServerXMLHTTP"), + threading(apartment), uuid(afb40ffd-b609-40a3-9828-f88bbe11e4e3) ] coclass ServerXMLHTTP30 @@ -1678,11 +1698,15 @@ coclass ServerXMLHTTP60 } [ - uuid(373984c9-b845-449b-91e7-45ac83036ade) + helpstring("Server XML HTTP"), + progid("Msxml2.ServerXMLHTTP"), + vi_progid("Msxml2.ServerXMLHTTP"), + threading(apartment), + uuid(afba6b42-5692-48ea-8141-dc517dcf0ef1) ] -coclass XMLSchemaCache +coclass ServerXMLHTTP { - [default] interface IXMLDOMSchemaCollection; + [default] interface IServerXMLHTTPRequest; } [ @@ -1694,6 +1718,10 @@ coclass XMLSchemaCache26 } [ + helpstring("XML Schema Cache 3.0"), + progid("Msxml2.XMLSchemaCache.3.0"), + vi_progid("Msxml2.XMLSchemaCache"), + threading(both), uuid(f5078f34-c551-11d3-89b9-0000f81fe221) ] coclass XMLSchemaCache30 @@ -1718,11 +1746,15 @@ coclass XMLSchemaCache60 } [ - uuid(2933BF94-7B36-11d2-B20E-00C04F983E60) + helpstring("XML Schema Cache"), + progid("Msxml2.XMLSchemaCache"), + vi_progid("Msxml2.XMLSchemaCache"), + threading(both), + uuid(373984c9-b845-449b-91e7-45ac83036ade) ] -coclass XSLTemplate +coclass XMLSchemaCache { - [default] interface IXSLTemplate; + [default] interface IXMLDOMSchemaCollection; } [ @@ -1734,6 +1766,10 @@ coclass XSLTemplate26 } [ + helpstring("XSL Template 3.0"), + progid("Msxml2.XSLTemplate.3.0"), + vi_progid("Msxml2.XSLTemplate"), + threading(both), uuid(f5078f36-c551-11d3-89b9-0000f81fe221) ] coclass XSLTemplate30 @@ -1757,6 +1793,18 @@ coclass XSLTemplate60 [default] interface IXSLTemplate; } +[ + helpstring("XSL Template"), + progid("Msxml2.XSLTemplate"), + vi_progid("Msxml2.XSLTemplate"), + threading(both), + uuid(2933BF94-7B36-11d2-B20E-00C04F983E60) +] +coclass XSLTemplate +{ + [default] interface IXSLTemplate; +} + /* * Sax Interfaces */ @@ -3214,16 +3262,10 @@ interface ISchemaNotation : ISchemaItem [ - uuid(079aa557-4a18-424a-8eee-e39f0a8d41b9) -] -coclass SAXXMLReader -{ - [default] interface IVBSAXXMLReader; - interface ISAXXMLReader; - interface IMXReaderControl; -}; - -[ + helpstring("SAX XML Reader 3.0"), + progid("Msxml2.SAXXMLReader.3.0"), + vi_progid("Msxml2.SAXXMLReader"), + threading(both), uuid(3124c396-fb13-4836-a6ad-1317f1713688) ] coclass SAXXMLReader30 @@ -3251,6 +3293,20 @@ coclass SAXXMLReader60 interface ISAXXMLReader; } +[ + helpstring("SAX XML Reader"), + progid("Msxml2.SAXXMLReader"), + vi_progid("Msxml2.SAXXMLReader"), + threading(both), + uuid(079aa557-4a18-424a-8eee-e39f0a8d41b9) +] +coclass SAXXMLReader +{ + [default] interface IVBSAXXMLReader; + interface ISAXXMLReader; + interface IMXReaderControl; +} + [ uuid(a4c23ec3-6b70-4466-9127-550077239978) ] @@ -3332,26 +3388,10 @@ coclass MXHTMLWriter60 } [ - uuid(fc220ad8-a72a-4ee8-926e-0b7ad152a020) -] -coclass MXXMLWriter -{ - [default] interface IMXWriter; - - interface ISAXContentHandler; - interface ISAXErrorHandler; - interface ISAXDTDHandler; - interface ISAXLexicalHandler; - interface ISAXDeclHandler; - - interface IVBSAXContentHandler; - interface IVBSAXDeclHandler; - interface IVBSAXDTDHandler; - interface IVBSAXErrorHandler; - interface IVBSAXLexicalHandler; -}; - -[ + helpstring("MXXMLWriter 3.0"), + progid("Msxml2.MXXMLWriter.3.0"), + vi_progid("Msxml2.MXXMLWriter"), + threading(both), uuid(3d813dfe-6c91-4a4e-8f41-04346a841d9c) ] coclass MXXMLWriter30 @@ -3411,6 +3451,30 @@ coclass MXXMLWriter60 interface IVBSAXLexicalHandler; } +[ + helpstring("MXXMLWriter"), + progid("Msxml2.MXXMLWriter"), + vi_progid("Msxml2.MXXMLWriter"), + threading(both), + uuid(fc220ad8-a72a-4ee8-926e-0b7ad152a020) +] +coclass MXXMLWriter +{ + [default] interface IMXWriter; + + interface ISAXContentHandler; + interface ISAXErrorHandler; + interface ISAXDTDHandler; + interface ISAXLexicalHandler; + interface ISAXDeclHandler; + + interface IVBSAXContentHandler; + interface IVBSAXDeclHandler; + interface IVBSAXDTDHandler; + interface IVBSAXErrorHandler; + interface IVBSAXLexicalHandler; +} + [ uuid(88d969d5-f192-11d4-a65f-0040963251e5) ] @@ -3439,16 +3503,10 @@ coclass MXNamespaceManager60 } [ - uuid(4dd441ad-526d-4a77-9f1b-9841ed802fb0) -] -coclass SAXAttributes -{ - [default] interface IMXAttributes; - interface IVBSAXAttributes; - interface ISAXAttributes; -} - -[ + helpstring("SAXAttributes 3.0"), + progid("Msxml2.SAXAttributes.3.0"), + vi_progid("Msxml2.SAXAttributes"), + threading(both), uuid(3e784a01-f3ae-4dc0-9354-9526b9370eba) ] coclass SAXAttributes30 @@ -3478,6 +3536,20 @@ coclass SAXAttributes60 interface ISAXAttributes; } +[ + helpstring("SAXAttributes"), + progid("Msxml2.SAXAttributes"), + vi_progid("Msxml2.SAXAttributes"), + threading(both), + uuid(4dd441ad-526d-4a77-9f1b-9841ed802fb0) +] +coclass SAXAttributes +{ + [default] interface IMXAttributes; + interface IVBSAXAttributes; + interface ISAXAttributes; +} + /* * Error Codes */