]>
git.saurik.com Git - apple/mdnsresponder.git/blob - Clients/ExplorerPlugin/ClassFactory.cpp
2 * Copyright (c) 2003-2004 Apple Computer, Inc. All rights reserved.
4 * @APPLE_LICENSE_HEADER_START@
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
21 * @APPLE_LICENSE_HEADER_END@
23 Change History (most recent first):
25 $Log: ClassFactory.cpp,v $
26 Revision 1.2 2004/07/13 21:24:21 rpantos
27 Fix for <rdar://problem/3701120>.
29 Revision 1.1 2004/06/18 04:34:59 rpantos
30 Move to Clients from mDNSWindows
32 Revision 1.1 2004/01/30 03:01:56 bradley
33 Explorer Plugin to browse for DNS-SD advertised Web and FTP servers from within Internet Explorer.
39 #include "DebugServices.h"
41 #include "ExplorerBar.h"
42 #include "ExplorerPlugin.h"
44 #include "ClassFactory.h"
51 static char THIS_FILE
[] = __FILE__
;
54 //===========================================================================================================================
56 //===========================================================================================================================
58 ClassFactory::ClassFactory( CLSID inCLSID
)
60 mCLSIDObject
= inCLSID
;
65 //===========================================================================================================================
67 //===========================================================================================================================
69 ClassFactory::~ClassFactory( void )
71 check( gDLLRefCount
> 0 );
78 #pragma mark == IUnknown methods ==
81 //===========================================================================================================================
83 //===========================================================================================================================
85 STDMETHODIMP
ClassFactory::QueryInterface( REFIID inID
, LPVOID
*outResult
)
91 if( IsEqualIID( inID
, IID_IUnknown
) )
95 else if( IsEqualIID( inID
, IID_IClassFactory
) )
97 *outResult
= (IClassFactory
*) this;
106 ( *( (LPUNKNOWN
*) outResult
) )->AddRef();
113 //===========================================================================================================================
115 //===========================================================================================================================
117 STDMETHODIMP_( DWORD
) ClassFactory::AddRef( void )
119 return( ++mRefCount
);
122 //===========================================================================================================================
124 //===========================================================================================================================
126 STDMETHODIMP_( DWORD
) ClassFactory::Release( void )
140 #pragma mark == IClassFactory methods ==
143 //===========================================================================================================================
145 //===========================================================================================================================
147 STDMETHODIMP
ClassFactory::CreateInstance( LPUNKNOWN inUnknown
, REFIID inID
, LPVOID
*outObject
)
156 require_action( !inUnknown
, exit
, err
= CLASS_E_NOAGGREGATION
);
158 // Create the object based on the CLSID.
160 if( IsEqualCLSID( mCLSIDObject
, CLSID_ExplorerBar
) )
164 obj
= new ExplorerBar();
168 // Don't let exception escape.
170 require_action( obj
, exit
, err
= E_OUTOFMEMORY
);
178 // Query for the specified interface. Release the factory since QueryInterface retains it.
180 err
= ( (LPUNKNOWN
) obj
)->QueryInterface( inID
, outObject
);
181 ( (LPUNKNOWN
) obj
)->Release();
187 //===========================================================================================================================
189 //===========================================================================================================================
191 STDMETHODIMP
ClassFactory::LockServer( BOOL inLock
)
193 DEBUG_UNUSED( inLock
);