1 /* 2 * Class factory interface for Queue Manager (BITS) 3 * 4 * Copyright (C) 2007 Google (Roy Shea) 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 19 */ 20 21 #include "qmgr.h" 22 #include "wine/debug.h" 23 24 WINE_DEFAULT_DEBUG_CHANNEL(qmgr); 25 26 static ULONG WINAPI 27 BITS_IClassFactory_AddRef(IClassFactory *iface) 28 { 29 return 2; /* non-heap based object */ 30 } 31 32 static HRESULT WINAPI 33 BITS_IClassFactory_QueryInterface(IClassFactory *iface, REFIID riid, void **ppvObj) 34 { 35 if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IClassFactory)) 36 { 37 *ppvObj = &BITS_ClassFactory.IClassFactory_iface; 38 return S_OK; 39 } 40 41 *ppvObj = NULL; 42 return E_NOINTERFACE; 43 } 44 45 static ULONG WINAPI 46 BITS_IClassFactory_Release(IClassFactory *iface) 47 { 48 return 1; /* non-heap based object */ 49 } 50 51 static HRESULT WINAPI 52 BITS_IClassFactory_CreateInstance(IClassFactory *iface, IUnknown *pUnkOuter, REFIID riid, 53 void **ppvObj) 54 { 55 HRESULT res; 56 IUnknown *punk = NULL; 57 58 TRACE("IID: %s\n", debugstr_guid(riid)); 59 60 if (pUnkOuter) 61 return CLASS_E_NOAGGREGATION; 62 63 res = BackgroundCopyManagerConstructor((LPVOID*) &punk); 64 if (FAILED(res)) 65 return res; 66 67 res = IUnknown_QueryInterface(punk, riid, ppvObj); 68 IUnknown_Release(punk); 69 return res; 70 } 71 72 static HRESULT WINAPI 73 BITS_IClassFactory_LockServer(IClassFactory *iface, BOOL fLock) 74 { 75 FIXME("Not implemented\n"); 76 return E_NOTIMPL; 77 } 78 79 static const IClassFactoryVtbl BITS_IClassFactory_Vtbl = 80 { 81 BITS_IClassFactory_QueryInterface, 82 BITS_IClassFactory_AddRef, 83 BITS_IClassFactory_Release, 84 BITS_IClassFactory_CreateInstance, 85 BITS_IClassFactory_LockServer 86 }; 87 88 ClassFactoryImpl BITS_ClassFactory = 89 { 90 { &BITS_IClassFactory_Vtbl } 91 }; 92