Alistair Leslie-Hughes <[email protected]> writes: > @@ -194,13 +245,33 @@ HRESULT WINAPI DllUnregisterServer(void) > > HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv) > { > + scrruncf *This; > + HRESULT hr = CLASS_E_CLASSNOTAVAILABLE; > + > + TRACE("(%s, %s, %p): stub\n", debugstr_guid(rclsid), > debugstr_guid(riid), ppv); > + > + if(!ppv) > + return E_INVALIDARG; > + > + This = HeapAlloc(GetProcessHeap(), 0, sizeof(scrruncf)); > + > + This->IClassFactory_iface.lpVtbl = &scrruncf_vtbl; > + This->pfnCreateInstance = NULL; > + This->ref = 1; > + > if(IsEqualGUID(&CLSID_FileSystemObject, rclsid)) { > - TRACE("(CLSID_WshShell %s %p)\n", debugstr_guid(riid), ppv); > - return IClassFactory_QueryInterface(&FileSystemFactory, riid, ppv); > + TRACE("(CLSID_FileSystemObject %s %p)\n", debugstr_guid(riid), ppv); > + This->pfnCreateInstance = &create_filesystem; > + This->clsid = IID_IFileSystem3; > + }
You could just as well continue using static instances of the class factory, and using the IID as a clsid doesn't make much sense. -- Alexandre Julliard [email protected]
