COM: Methode einen Pointer auf ein Interface geben + initializieren
-
Hallo Board,
ich habe sagen wie zwei COM-Interfaces: IFoobar und IFoo.
In der IFoobar sollte eine Methode geben, die einen Pointer auf IFoo zurückgibt.Wie mache ich das am besten?
interface IFoobar : IDispatch { [id(1), helpstring("Methode GetFoo")] HRESULT GetFoo([out, retval] IDispatch* pFoo); // oder [id(1), helpstring("Methode GetFoo")] HRESULT GetFoo([out, retval] IFoo* pFoo); // oder [id(1), helpstring("Methode GetFoo")] HRESULT GetFoo([out, retval] VARIANT* pFoo); }
Was wäre am besten?
Ich will in der Methode selbst so was machen:
STDMETHODIMP Foobar::GetFoo(/*[out, retval]*/ IDispatch* pFoo) { AFX_MANAGE_STATE(AfxGetStaticModuleState()) IFooPtr p(__uuidof(Foo)); // smart pointer auf dem scope *pFoo = p; // pFoo soll jetzt ein gültiger Pointer sein.. return S_OK; }
Wie mache ich das am besten?