[v2 3/5] compobj.dll16: Implement CoCreateInstance16().
Zebediah Figura
z.figura12 at gmail.com
Thu Feb 9 11:42:33 CST 2017
On 02/09/2017 09:27 AM, Alexandre Julliard wrote:
> Zebediah Figura <z.figura12 at gmail.com> writes:
>
>> @@ -899,17 +899,22 @@ HRESULT WINAPI CoCreateGuid16(GUID *pguid)
>> * CoCreateInstance [COMPOBJ.13]
>> */
>> HRESULT WINAPI CoCreateInstance16(
>> - REFCLSID rclsid,
>> - LPUNKNOWN pUnkOuter,
>> - DWORD dwClsContext,
>> - REFIID iid,
>> - LPVOID *ppv)
>> -{
>> - FIXME("(%s, %p, %x, %s, %p), stub!\n",
>> - debugstr_guid(rclsid), pUnkOuter, dwClsContext, debugstr_guid(iid),
>> - ppv
>> - );
>> - return E_NOTIMPL;
>> + REFCLSID rclsid,
>> + LPUNKNOWN pUnkOuter,
>> + DWORD dwClsContext,
>> + REFIID riid,
>> + LPVOID *ppv)
>> +{
>> + IClassFactory *cf;
>> + HRESULT hr;
>> +
>> + hr = CoGetClassObject16(rclsid, dwClsContext, NULL, &IID_IClassFactory, (void **)&cf);
>> + if (FAILED(hr))
>> + return hr;
>> +
>> + hr = IClassFactory_CreateInstance(cf, pUnkOuter, riid, ppv);
>> + IClassFactory_Release(cf);
>> + return hr;
>
> CoGetClassObject16 is supposed to return a 16-bit interface, you can't
> call it like that. How did you test this?
>
The application in question called CoGetClassObject directly; I just
implemented this function as an afterthought. I didn't realize it
wouldn't work. This patch can be left out.
More information about the wine-devel
mailing list