static HRESULT s_createHbOleObject( REFIID riid, void ** ppvObj, PHB_ITEM pAction, HB_BOOL fGuids ) { HRESULT hr; IHbOleServer * thisobj = ( IHbOleServer * ) hb_xalloc( sizeof( IHbOleServer ) ); if( ! thisobj ) { if( pAction ) hb_itemRelease( pAction ); hr = E_OUTOFMEMORY; } else { InterlockedIncrement( &s_lObjectCount ); thisobj->lpVtbl = &IHbOleServer_Vtbl; thisobj->count = 1; thisobj->pAction = pAction; thisobj->fGuids = fGuids; hr = IHbOleServer_Vtbl.QueryInterface( ( IDispatch * ) thisobj, riid, ppvObj ); IHbOleServer_Vtbl.Release( ( IDispatch * ) thisobj ); } return hr; }
static HRESULT Observable_CreateInstance( REFIID guidVtbl, void **ppv ) { HRESULT hr; Observable *pObservable; if (!(pObservable = GlobalAlloc(GMEM_FIXED, sizeof(Observable)))) { hr = E_OUTOFMEMORY; } else { pObservable->lpVtbl = &ObservableVtbl; pObservable->dwCount = 1; InterlockedIncrement(pdwLockCount); hr = ObservableVtbl.QueryInterface((IDispatch*) pObservable, guidVtbl, ppv); ObservableVtbl.Release((IDispatch*) pObservable); *ppv = pObservable; } return hr; }