summaryrefslogtreecommitdiffstats
path: root/ComLightLib/server/freeThreadedMarshaller.h
blob: 8ef774ebacc00b46bdd3a9515b8c05ee0d6fb4f6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#pragma once
#ifdef _MSC_VER
#include "../comLightCommon.h"

namespace ComLight
{
	namespace details
	{
		HRESULT createFreeThreadedMarshaller( IUnknown* pUnkOuter, IUnknown** ppUnkMarshal );
		bool queryMarshallerInterface( REFIID riid, void **ppvObject, IUnknown* marshaller );
	}
}

#define DECLARE_FREE_THREADED_MARSHALLER()                                                              \
private:                                                                                                \
ComLight::CComPtr<ComLight::IUnknown> m_freeThreadedMarshaller;                                         \
protected:                                                                                              \
HRESULT internalFinalConstruct()                                                                        \
{                                                                                                       \
	return ComLight::details::createFreeThreadedMarshaller( getUnknown(), &m_freeThreadedMarshaller );  \
}                                                                                                       \
bool queryExtraInterfaces( REFIID riid, void **ppvObject ) const                                        \
{                                                                                                       \
	return ComLight::details::queryMarshallerInterface( riid, ppvObject, m_freeThreadedMarshaller );    \
}

#else
#define DECLARE_FREE_THREADED_MARSHALLER()
#endif