On Mon, Apr 18, 2016 at 4:17 PM, Henri Verbeet <hverbeet(a)gmail.com> wrote:
On 17 April 2016 at 22:57, Aaryaman Vasishta <jem456.vasishta(a)gmail.com> wrote:
@@ -1054,10 +1058,50 @@ static ULONG WINAPI d3drm3_Release(IDirect3DRM3 *iface) static HRESULT WINAPI d3drm3_CreateObject(IDirect3DRM3 *iface, REFCLSID clsid, IUnknown *outer, REFIID iid, void **out) { - FIXME("iface %p, clsid %s, outer %p, iid %s, out %p stub!\n", + void *object_struct; ... + if (IsEqualGUID(clsid, &CLSID_CDirect3DRMTexture)) + { + if (FAILED(hr = d3drm_texture_create((struct d3drm_texture **)&object_struct))) + { + *out = NULL; + return hr; + } + object = (IUnknown *)&((struct d3drm_texture *)object_struct)->IDirect3DRMTexture3_iface; + } Why do you need "object_struct"?
I need it to store the object's address, from which the IUnknown interface is obtained which in turn is used to QI the required object using iid. Am I missing something? Is there a better way? I suppose I could re-use object and keep it as a void * instead of IUnknown.. Cheers, Aaryaman