Module: wine Branch: master Commit: a84870259f20cb14762139c28615c30feb1df63f URL: http://source.winehq.org/git/wine.git/?a=commit;h=a84870259f20cb14762139c286...
Author: Michael Stefaniuc mstefani@redhat.de Date: Mon Aug 1 10:41:56 2011 +0200
dxdiagn: Implement IClassFactory::QueryInterface.
---
dlls/dxdiagn/dxdiag_main.c | 19 +++++++++++++++---- 1 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/dlls/dxdiagn/dxdiag_main.c b/dlls/dxdiagn/dxdiag_main.c index 9cfe2ab..9f10a60 100644 --- a/dlls/dxdiagn/dxdiag_main.c +++ b/dlls/dxdiagn/dxdiag_main.c @@ -60,11 +60,22 @@ typedef struct {
static HRESULT WINAPI DXDiagCF_QueryInterface(IClassFactory *iface, REFIID riid, void **ppv) { - FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid)); + if (ppv == NULL) + return E_POINTER; + + if (IsEqualGUID(&IID_IUnknown, riid)) + TRACE("(%p)->(IID_IUnknown %p)\n", iface, ppv); + else if (IsEqualGUID(&IID_IClassFactory, riid)) + TRACE("(%p)->(IID_IClassFactory %p)\n", iface, ppv); + else { + FIXME("(%p)->(%s %p)\n", iface, debugstr_guid(riid), ppv); + *ppv = NULL; + return E_NOINTERFACE; + }
- if (ppv == NULL) return E_POINTER; - - return E_NOINTERFACE; + *ppv = iface; + IClassFactory_AddRef(iface); + return S_OK; }
static ULONG WINAPI DXDiagCF_AddRef(IClassFactory *iface)