Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
comgoop.cpp
Abstract:
Wrapper to create the XML parser that emulates COM activation of the inproc server.
Author:
Michael J. Grier (MGrier) 23-Feb-2000
Revision History:
--*/
#include "stdinc.h"
#include <windows.h>
#include <sxsp.h>
#include <ole2.h>
#include "xmlparser.hxx"
BOOL SxspGetXMLParser( REFIID riid, PVOID *ppvObj ) { BOOL fSuccess = FALSE;
FN_TRACE_WIN32(fSuccess);
XMLParser * pXMLParser = NULL;
if (ppvObj != NULL) *ppvObj = NULL;
PARAMETER_CHECK(ppvObj != NULL);
IFALLOCFAILED_EXIT(pXMLParser = new XMLParser); IFCOMFAILED_EXIT(pXMLParser->QueryInterface(riid, ppvObj));
pXMLParser = NULL;
fSuccess = TRUE;
Exit: FUSION_DELETE_SINGLETON(pXMLParser);
return fSuccess;
/*
BOOL fSuccess = TRUE; HINSTANCE hMSXML = NULL; typedef HRESULT (__stdcall *PFNGETCLASSOBJECT)(const CLSID &rclsid, const IID &riid, void **ppv); PFNGETCLASSOBJECT pfnGetClassObject = NULL; IClassFactory *pIClassFactory = NULL; HRESULT hr;
*ppvObj = NULL;
hMSXML = LoadLibraryExW(L"MSXML.DLL", NULL, 0); if (hMSXML == NULL) { fSuccess = FALSE; goto Exit; }
pfnGetClassObject = reinterpret_cast<PFNGETCLASSOBJECT>(::GetProcAddress(hMSXML, "DllGetClassObject")); if (pfnGetClassObject == NULL) { fSuccess = FALSE; goto Exit; }
hr = (*pfnGetClassObject)(CLSID_XMLParser, IID_IClassFactory, (LPVOID *) &pIClassFactory); if (FAILED(hr)) { ::FusionpSetLastErrorFromHRESULT(hr); fSuccess = FALSE; goto Exit; }
hr = pIClassFactory->CreateInstance(NULL, riid, ppvObj); if (FAILED(hr)) goto Exit;
fSuccess = TRUE;
Exit: if (pIClassFactory != NULL) pIClassFactory->Release();
return fSuccess; */ }
|