Mike McCormack : msi: Implement IClassFactory->QueryInterface() for the msi server dll.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Jan 25 06:12:19 CST 2007


Module: wine
Branch: master
Commit: c63d21bf8c0f4f4fab67438715556709eaff34fa
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=c63d21bf8c0f4f4fab67438715556709eaff34fa

Author: Mike McCormack <mike at codeweavers.com>
Date:   Thu Jan 25 19:17:42 2007 +0900

msi: Implement IClassFactory->QueryInterface() for the msi server dll.

---

 dlls/msi/msi_main.c |   16 ++++++++++++----
 1 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/dlls/msi/msi_main.c b/dlls/msi/msi_main.c
index 294de71..48cfd15 100644
--- a/dlls/msi/msi_main.c
+++ b/dlls/msi/msi_main.c
@@ -59,7 +59,7 @@ static void UnlockModule(void)
 }
 
 /******************************************************************
- *    	DllMain
+ *      DllMain
  */
 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
 {
@@ -78,8 +78,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL,
     return TRUE;
 }
 
-typedef struct tagIClassFactoryImpl
-{
+typedef struct tagIClassFactoryImpl {
     const IClassFactoryVtbl *lpVtbl;
 } IClassFactoryImpl;
 
@@ -87,7 +86,16 @@ static HRESULT WINAPI MsiCF_QueryInterfa
                 REFIID riid,LPVOID *ppobj)
 {
     IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
-    FIXME("%p %s %p\n",This,debugstr_guid(riid),ppobj);
+
+    TRACE("%p %s %p\n",This,debugstr_guid(riid),ppobj);
+
+    if( IsEqualCLSID( riid, &IID_IUnknown ) ||
+        IsEqualCLSID( riid, &IID_IClassFactory ) )
+    {
+        IClassFactory_AddRef( iface );
+        *ppobj = iface;
+        return S_OK;
+    }
     return E_NOINTERFACE;
 }
 




More information about the wine-cvs mailing list