in sfwrapper/inc/sf_macros.h [23:53]
HRESULT CREATE_IFABRICINSTANCE_NAME(IFabricType)(IFabricType** fabricVariable) \
{ \
HRESULT hr; \
if (fabricVariable == NULL) \
{ \
LogError("invalid argument fabricVariable=%p", fabricVariable); \
hr = E_POINTER; \
} \
else \
{ \
/*clean it if needed*/ \
if (*fabricVariable != NULL) \
{ \
LogInfo("cleaning *fabricVariable=%p", *fabricVariable); \
(void)((IFabricType*)*fabricVariable)->lpVtbl->Release((IFabricType*)*fabricVariable); \
} \
\
/*re-create in place*/ \
hr = FabricCreateLocalClient(&MU_C2(IID_, IFabricType), fabricVariable); /*all IFabricWhateverSomethingClient are created with this call, passing a different interface IID*/ \
if (FAILED(hr)) \
{ \
LogHRESULTError(hr, "failure in FabricCreateLocalClient"); \
/*return as is*/ \
} \
else \
{ \
/*well - it seems to have been created "in place", return hr "as is"*/ \
} \
} \
return hr; \
} \