101 lines
1.9 KiB
C++
101 lines
1.9 KiB
C++
/*++
|
|
|
|
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;
|
|
*/
|
|
}
|