How about this?

if (IsEqualGUID(clsid, &CLSID_CDirect3DRMTexture))
{
    struct d3drm_texture *texture;
    if (FAILED(hr = d3drm_texture_create(&texture))
    {
        *out = NULL;
        return hr;
    }
    object = texture->IDirect3DRMTexture3_iface;
}
What do you think? I'm not sure if declaring variables like that is allowed, but it has been used in similar cases elsewhere so I guess it should be fine.

On Mon, Apr 18, 2016 at 9:29 PM, Henri Verbeet <hverbeet@gmail.com> wrote:
On 18 April 2016 at 17:45, Aaryaman Vasishta <jem456.vasishta@gmail.com> wrote:
> I thought it'd be a good idea to keep it void * for once future objects
> would be implemented (i.e. the one's that have todo marked as true in the
> tests).
That can't work in a sane way. You need a specific type because you
need to dereference the pointer to get at the interface. I.e., notice
how you're casting "object_struct" in every place where you use it.