On 3/11/2013 16:36, Jeff Latimer wrote:
+ if (!ppv) return E_INVALIDARG;
You don't need this most likely.
+ IUnknown_AddRef((IUnknown*)*ppv);
A cleaner way is to AddRef original iface, but that's a matter of taste.
+static ULONG WINAPI WMCreateEditor_AddRef(IWMMetadataEditor *iface)
+{
+ FIXME("iface=%p\n", iface);
+ return 2;
+}
+
+static ULONG WINAPI WMCreateEditor_Release(IWMMetadataEditor *iface)
+{
+ FIXME("iface=%p\n", iface);
+ HeapFree(GetProcessHeap(), 0, iface);
+ return 1;
+}
What's this supposed to mean?
+HRESULT WINAPI WMCreateEditor_flush(IWMMetadataEditor *iface)
+{
+ FIXME("iface=%p\n", iface);
+ HeapFree(GetProcessHeap(), 0, iface);
+ return S_OK;
+}
+
+HRESULT WINAPI WMCreateEditor_close(IWMMetadataEditor *iface)
+{
+ FIXME("iface=%p\n", iface);
+ HeapFree(GetProcessHeap(), 0, iface);
+ return S_OK;
+}
I don't think so.
HRESULT WINAPI WMCreateEditor(IWMMetadataEditor **editor)
{
+ IWMMetadataEditor *This;
FIXME("(%p): stub\n", editor);
- *editor = NULL;
+ This = HeapAlloc(GetProcessHeap(), 0, sizeof(IWMMetadataEditor));
+ if (!This) return E_OUTOFMEMORY;
- return E_NOTIMPL;
+ This->lpVtbl = &Editor_vtable;
+ *editor = This;
+
+ return S_OK;
}
That's not how it's done, there's plenty of examples already.
-};
+}
That change is ok I think.