PATCH: cogetclassobject clarificvation

Marcus Meissner marcus at jet.franken.de
Sat Apr 7 07:58:46 CDT 2001


Hi,

Ciao, Marcus

Changelog:
	arg 3 of CoGetClassObject is COSERVERINFO*, added some more debug.

Index: dlls/ole32/compobj.c
===================================================================
RCS file: /home/wine/wine/dlls/ole32/compobj.c,v
retrieving revision 1.37
diff -u -r1.37 compobj.c
--- dlls/ole32/compobj.c	2001/02/12 03:51:04	1.37
+++ dlls/ole32/compobj.c	2001/04/07 13:44:21
@@ -1150,9 +1150,10 @@
 /***********************************************************************
  *           CoGetClassObject [COMPOBJ.7]
  */
-HRESULT WINAPI CoGetClassObject(REFCLSID rclsid, DWORD dwClsContext,
-                        LPVOID pvReserved, REFIID iid, LPVOID *ppv)
-{
+HRESULT WINAPI CoGetClassObject(
+    REFCLSID rclsid, DWORD dwClsContext, COSERVERINFO *pServerInfo,
+    REFIID iid, LPVOID *ppv
+) {
     LPUNKNOWN	regClassObject;
     HRESULT	hres = E_UNEXPECTED;
     char	xclsid[80];
@@ -1170,6 +1171,11 @@
 	debugstr_guid(iid)
     );
 
+    if (pServerInfo) {
+	FIXME("\tpServerInfo: name=%s\n",debugstr_w(pServerInfo->pwszName));
+	FIXME("\t\tpAuthInfo=%p\n",pServerInfo->pAuthInfo);
+    }
+
     /*
      * First, try and see if we can't match the class ID with one of the 
      * registered classes.
@@ -1192,9 +1198,13 @@
     }
 
     /* out of process and remote servers not supported yet */
-    if (((CLSCTX_LOCAL_SERVER|CLSCTX_REMOTE_SERVER) & dwClsContext)
-        && !((CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER) & dwClsContext)){
-        FIXME("CLSCTX_LOCAL_SERVER and CLSCTX_REMOTE_SERVER not supported!\n");
+    if (     ((CLSCTX_LOCAL_SERVER|CLSCTX_REMOTE_SERVER) & dwClsContext)
+        && !((CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER) & dwClsContext)
+    ){
+        FIXME("%s %s not supported!\n",
+		(dwClsContext&CLSCTX_LOCAL_SERVER)?"CLSCTX_LOCAL_SERVER":"",
+		(dwClsContext&CLSCTX_REMOTE_SERVER)?"CLSCTX_REMOTE_SERVER":""
+	);
 	return E_ACCESSDENIED;
     }
 
@@ -1383,8 +1393,10 @@
 			  &IID_IClassFactory,
 			  (LPVOID)&lpclf);
 
-  if (FAILED(hres))
+  if (FAILED(hres)) {
+    FIXME("no instance created for %s, hres is 0x%08lx\n",debugstr_guid(iid),hres);
     return hres;
+  }
 
   /*
    * Create the object and don't forget to release the factory
Index: include/wine/obj_base.h
===================================================================
RCS file: /home/wine/wine/include/wine/obj_base.h,v
retrieving revision 1.38
diff -u -r1.38 obj_base.h
--- include/wine/obj_base.h	2001/01/04 22:59:49	1.38
+++ include/wine/obj_base.h	2001/04/07 13:45:09
@@ -628,7 +628,7 @@
 
 HRESULT WINAPI CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv);
 
-HRESULT WINAPI CoGetClassObject(REFCLSID rclsid, DWORD dwClsContext, LPVOID pvReserved, REFIID iid, LPVOID *ppv);
+HRESULT WINAPI CoGetClassObject(REFCLSID rclsid, DWORD dwClsContext, COSERVERINFO *pServerInfo, REFIID iid, LPVOID *ppv);
 
 HRESULT WINAPI CoInitialize(LPVOID lpReserved);
 HRESULT WINAPI CoInitializeEx(LPVOID lpReserved, DWORD dwCoInit);




More information about the wine-patches mailing list