VirtualBox

source: vbox/trunk/src/VBox/Main/include/VirtualBoxErrorInfoImpl.h@ 50874

Last change on this file since 50874 was 47391, checked in by vboxsync, 11 years ago

Main/VirtualBoxErrorInfo: Initialize mResultDetail.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.3 KB
Line 
1/** @file
2 * VirtualBoxErrorInfo COM class definition.
3 */
4
5/*
6 * Copyright (C) 2006-2013 Oracle Corporation
7 *
8 * This file is part of VirtualBox Open Source Edition (OSE), as
9 * available from http://www.virtualbox.org. This file is free software;
10 * you can redistribute it and/or modify it under the terms of the GNU
11 * General Public License (GPL) as published by the Free Software
12 * Foundation, in version 2 as it comes in the "COPYING" file of the
13 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
14 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
15 */
16
17#ifndef ____H_VIRTUALBOXERRORINFOIMPL
18#define ____H_VIRTUALBOXERRORINFOIMPL
19
20#include "VirtualBoxBase.h"
21
22using namespace com;
23
24class ATL_NO_VTABLE VirtualBoxErrorInfo
25 : public CComObjectRootEx<CComMultiThreadModel>
26 , VBOX_SCRIPTABLE_IMPL(IVirtualBoxErrorInfo)
27#ifndef VBOX_WITH_XPCOM /* IErrorInfo doesn't inherit from IDispatch, ugly 3am hack: */
28 , public IDispatch
29#endif
30{
31public:
32
33 DECLARE_NOT_AGGREGATABLE(VirtualBoxErrorInfo)
34
35 DECLARE_PROTECT_FINAL_CONSTRUCT()
36
37 BEGIN_COM_MAP(VirtualBoxErrorInfo)
38 COM_INTERFACE_ENTRY(IErrorInfo)
39 COM_INTERFACE_ENTRY(IVirtualBoxErrorInfo)
40 COM_INTERFACE_ENTRY(IDispatch)
41 END_COM_MAP()
42
43#ifndef VBOX_WITH_XPCOM
44
45 HRESULT init(IErrorInfo *aInfo);
46
47 STDMETHOD(GetGUID)(GUID *guid);
48 STDMETHOD(GetSource)(BSTR *source);
49 STDMETHOD(GetDescription)(BSTR *description);
50 STDMETHOD(GetHelpFile)(BSTR *pBstrHelpFile);
51 STDMETHOD(GetHelpContext)(DWORD *pdwHelpContext);
52
53 // IDispatch forwarding - 3am hack.
54 typedef IDispatchImpl<IVirtualBoxErrorInfo, &IID_IVirtualBoxErrorInfo, &LIBID_VirtualBox, kTypeLibraryMajorVersion, kTypeLibraryMinorVersion> idi;
55
56 STDMETHOD(GetTypeInfoCount)(UINT *pcInfo)
57 {
58 return idi::GetTypeInfoCount(pcInfo);
59 }
60
61 STDMETHOD(GetTypeInfo)(UINT iInfo, LCID Lcid, ITypeInfo **ppTypeInfo)
62 {
63 return idi::GetTypeInfo(iInfo, Lcid, ppTypeInfo);
64 }
65
66 STDMETHOD(GetIDsOfNames)(REFIID rIID, LPOLESTR *papwszNames, UINT cNames, LCID Lcid, DISPID *paDispIDs)
67 {
68 return idi::GetIDsOfNames(rIID, papwszNames, cNames, Lcid, paDispIDs);
69 }
70
71 STDMETHOD(Invoke)(DISPID idDispMember, REFIID rIID, LCID Lcid, WORD fw, DISPPARAMS *pDispParams,
72 VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *piErrArg)
73 {
74 return idi::Invoke(idDispMember, rIID, Lcid, fw, pDispParams, pVarResult, pExcepInfo, piErrArg);
75 }
76
77#else // defined(VBOX_WITH_XPCOM)
78
79 HRESULT init(nsIException *aInfo);
80
81 NS_DECL_NSIEXCEPTION
82
83#endif
84
85 VirtualBoxErrorInfo()
86 : m_resultCode(S_OK),
87 m_resultDetail(0)
88 {}
89
90 // public initializer/uninitializer for internal purposes only
91 HRESULT init(HRESULT aResultCode,
92 const GUID &aIID,
93 const char *pcszComponent,
94 const Utf8Str &strText,
95 IVirtualBoxErrorInfo *aNext = NULL);
96
97 HRESULT initEx(HRESULT aResultCode,
98 LONG aResultDetail,
99 const GUID &aIID,
100 const char *pcszComponent,
101 const Utf8Str &strText,
102 IVirtualBoxErrorInfo *aNext = NULL);
103
104 HRESULT init(const com::ErrorInfo &ei,
105 IVirtualBoxErrorInfo *aNext = NULL);
106
107 // IVirtualBoxErrorInfo properties
108 STDMETHOD(COMGETTER(ResultCode))(LONG *aResultCode);
109 STDMETHOD(COMGETTER(ResultDetail))(LONG *aResultDetail);
110 STDMETHOD(COMGETTER(InterfaceID))(BSTR *aIID);
111 STDMETHOD(COMGETTER(Component))(BSTR *aComponent);
112 STDMETHOD(COMGETTER(Text))(BSTR *aText);
113 STDMETHOD(COMGETTER(Next))(IVirtualBoxErrorInfo **aNext);
114
115private:
116 // FIXME: declare these here until VBoxSupportsTranslation base
117 // is available in this class.
118 static const char *tr(const char *a) { return a; }
119 static HRESULT setError(HRESULT rc,
120 const char * /* a */,
121 const char * /* b */,
122 void * /* c */) { return rc; }
123
124 HRESULT m_resultCode;
125 LONG m_resultDetail;
126 Utf8Str m_strText;
127 Guid m_IID;
128 Utf8Str m_strComponent;
129 ComPtr<IVirtualBoxErrorInfo> mNext;
130};
131
132#endif // !____H_VIRTUALBOXERRORINFOIMPL
133
134/* vi: set tabstop=4 shiftwidth=4 expandtab: */
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