VirtualBox

source: vbox/trunk/src/VBox/Additions/WINNT/VBoxCredProv/dll.h@ 27709

Last change on this file since 27709 was 25811, checked in by vboxsync, 15 years ago

VBoxCredProv: Enabled building by default on OSE (second try).

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.4 KB
Line 
1//
2// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
3// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
4// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
5// PARTICULAR PURPOSE.
6//
7// Copyright (c) 2006 Microsoft Corporation. All rights reserved.
8//
9// Modifications (c) 2009 Sun Microsystems, Inc.
10//
11
12#ifndef ___dll_h
13#define ___dll_h
14
15#include <iprt/assert.h>
16#include <iprt/initterm.h>
17#include <iprt/log.h>
18
19#include <VBox/Log.h>
20
21extern HINSTANCE g_hinst;
22
23LONG DllAddRef();
24LONG DllRelease();
25
26extern HRESULT VBoxCredProv_CreateInstance(REFIID riid, void** ppv);
27
28class CClassFactory : public IClassFactory
29{
30 public:
31 // IUnknown
32 STDMETHOD_(ULONG, AddRef)()
33 {
34 return _cRef++;
35 }
36
37 STDMETHOD_(ULONG, Release)()
38 {
39 LONG cRef = _cRef--;
40 if (!cRef)
41 {
42 delete this;
43 }
44 return cRef;
45 }
46
47 STDMETHOD (QueryInterface)(REFIID riid, void** ppv)
48 {
49 HRESULT hr;
50 if (ppv != NULL)
51 {
52 if (IID_IClassFactory == riid || IID_IUnknown == riid)
53 {
54 *ppv = static_cast<IUnknown*>(this);
55 reinterpret_cast<IUnknown*>(*ppv)->AddRef();
56 hr = S_OK;
57 }
58 else
59 {
60 *ppv = NULL;
61 hr = E_NOINTERFACE;
62 }
63 }
64 else
65 {
66 hr = E_INVALIDARG;
67 }
68 return hr;
69 }
70
71 // IClassFactory
72 STDMETHOD (CreateInstance)(IUnknown* pUnkOuter, REFIID riid, void** ppv)
73 {
74 HRESULT hr;
75 if (!pUnkOuter)
76 {
77 hr = VBoxCredProv_CreateInstance(riid, ppv);
78 }
79 else
80 {
81 hr = CLASS_E_NOAGGREGATION;
82 }
83 return hr;
84 }
85
86 STDMETHOD (LockServer)(BOOL bLock)
87 {
88 if (bLock)
89 {
90 DllAddRef();
91 }
92 else
93 {
94 DllRelease();
95 }
96 return S_OK;
97 }
98
99 private:
100
101 CClassFactory() : _cRef(1) {}
102 ~CClassFactory(){}
103
104 private:
105
106 LONG _cRef;
107 friend HRESULT CClassFactory_CreateInstance(REFCLSID rclsid, REFIID riid, void** ppv);
108};
109
110#endif /* ___dll_h */
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette