ReactOS 0.4.16-dev-2320-ge1853c6
errorinfo.c File Reference
#include "oleauto.h"
#include "combase_private.h"
#include "wine/debug.h"
Include dependency graph for errorinfo.c:

Go to the source code of this file.

Classes

struct  error_info
 

Macros

#define COBJMACROS
 
#define WINOLEAUTAPI
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (ole)
 
static struct error_infoimpl_from_IErrorInfo (IErrorInfo *iface)
 
static struct error_infoimpl_from_ICreateErrorInfo (ICreateErrorInfo *iface)
 
static struct error_infoimpl_from_ISupportErrorInfo (ISupportErrorInfo *iface)
 
static HRESULT WINAPI errorinfo_QueryInterface (IErrorInfo *iface, REFIID riid, void **obj)
 
static ULONG WINAPI errorinfo_AddRef (IErrorInfo *iface)
 
static ULONG WINAPI errorinfo_Release (IErrorInfo *iface)
 
static HRESULT WINAPI errorinfo_GetGUID (IErrorInfo *iface, GUID *guid)
 
static HRESULT WINAPI errorinfo_GetSource (IErrorInfo *iface, BSTR *source)
 
static HRESULT WINAPI errorinfo_GetDescription (IErrorInfo *iface, BSTR *description)
 
static HRESULT WINAPI errorinfo_GetHelpFile (IErrorInfo *iface, BSTR *helpfile)
 
static HRESULT WINAPI errorinfo_GetHelpContext (IErrorInfo *iface, DWORD *help_context)
 
static HRESULT WINAPI create_errorinfo_QueryInterface (ICreateErrorInfo *iface, REFIID riid, void **obj)
 
static ULONG WINAPI create_errorinfo_AddRef (ICreateErrorInfo *iface)
 
static ULONG WINAPI create_errorinfo_Release (ICreateErrorInfo *iface)
 
static HRESULT WINAPI create_errorinfo_SetGUID (ICreateErrorInfo *iface, REFGUID guid)
 
static HRESULT WINAPI create_errorinfo_SetSource (ICreateErrorInfo *iface, LPOLESTR source)
 
static HRESULT WINAPI create_errorinfo_SetDescription (ICreateErrorInfo *iface, LPOLESTR description)
 
static HRESULT WINAPI create_errorinfo_SetHelpFile (ICreateErrorInfo *iface, LPOLESTR helpfile)
 
static HRESULT WINAPI create_errorinfo_SetHelpContext (ICreateErrorInfo *iface, DWORD help_context)
 
static HRESULT WINAPI support_errorinfo_QueryInterface (ISupportErrorInfo *iface, REFIID riid, void **obj)
 
static ULONG WINAPI support_errorinfo_AddRef (ISupportErrorInfo *iface)
 
static ULONG WINAPI support_errorinfo_Release (ISupportErrorInfo *iface)
 
static HRESULT WINAPI support_errorinfo_InterfaceSupportsErrorInfo (ISupportErrorInfo *iface, REFIID riid)
 
HRESULT WINAPI CreateErrorInfo (ICreateErrorInfo **ret)
 
HRESULT WINAPI GetErrorInfo (ULONG reserved, IErrorInfo **error_info)
 
HRESULT WINAPI SetErrorInfo (ULONG reserved, IErrorInfo *error_info)
 

Variables

static const IErrorInfoVtbl errorinfo_vtbl
 
static const ICreateErrorInfoVtbl create_errorinfo_vtbl
 
static const ISupportErrorInfoVtbl support_errorinfo_vtbl
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 21 of file errorinfo.c.

◆ WINOLEAUTAPI

#define WINOLEAUTAPI

Definition at line 22 of file errorinfo.c.

Function Documentation

◆ create_errorinfo_AddRef()

static ULONG WINAPI create_errorinfo_AddRef ( ICreateErrorInfo iface)
static

Definition at line 198 of file errorinfo.c.

199{
201 return IErrorInfo_AddRef(&error_info->IErrorInfo_iface);
202}
static struct error_info * impl_from_ICreateErrorInfo(ICreateErrorInfo *iface)
Definition: errorinfo.c:51
IErrorInfo IErrorInfo_iface
Definition: errorinfo.c:34

◆ create_errorinfo_QueryInterface()

static HRESULT WINAPI create_errorinfo_QueryInterface ( ICreateErrorInfo iface,
REFIID  riid,
void **  obj 
)
static

Definition at line 192 of file errorinfo.c.

193{
195 return IErrorInfo_QueryInterface(&error_info->IErrorInfo_iface, riid, obj);
196}
REFIID riid
Definition: atlbase.h:39

◆ create_errorinfo_Release()

static ULONG WINAPI create_errorinfo_Release ( ICreateErrorInfo iface)
static

Definition at line 204 of file errorinfo.c.

205{
207 return IErrorInfo_Release(&error_info->IErrorInfo_iface);
208}

◆ create_errorinfo_SetDescription()

static HRESULT WINAPI create_errorinfo_SetDescription ( ICreateErrorInfo iface,
LPOLESTR  description 
)
static

Definition at line 233 of file errorinfo.c.

234{
236
237 TRACE("%p, %s.\n", iface, debugstr_w(description));
238
241
242 return S_OK;
243}
#define free
Definition: debug_ros.c:5
static wchar_t * wcsdup(const wchar_t *str)
Definition: string.h:94
#define S_OK
Definition: intsafe.h:52
#define debugstr_w
Definition: kernel32.h:32
#define TRACE(s)
Definition: solgame.cpp:4
WCHAR * description
Definition: errorinfo.c:41
const char * description
Definition: directx.c:2497

◆ create_errorinfo_SetGUID()

static HRESULT WINAPI create_errorinfo_SetGUID ( ICreateErrorInfo iface,
REFGUID  guid 
)
static

Definition at line 210 of file errorinfo.c.

211{
213
214 TRACE("%p, %s.\n", iface, debugstr_guid(guid));
215
216 error_info->guid = *guid;
217
218 return S_OK;
219}
GUID guid
Definition: version.c:147
#define debugstr_guid
Definition: kernel32.h:35
GUID guid
Definition: errorinfo.c:39

◆ create_errorinfo_SetHelpContext()

static HRESULT WINAPI create_errorinfo_SetHelpContext ( ICreateErrorInfo iface,
DWORD  help_context 
)
static

Definition at line 257 of file errorinfo.c.

258{
260
261 TRACE("%p, %#lx.\n", iface, help_context);
262
264
265 return S_OK;
266}
DWORD help_context
Definition: errorinfo.c:43

◆ create_errorinfo_SetHelpFile()

static HRESULT WINAPI create_errorinfo_SetHelpFile ( ICreateErrorInfo iface,
LPOLESTR  helpfile 
)
static

Definition at line 245 of file errorinfo.c.

246{
248
249 TRACE("%p, %s.\n", iface, debugstr_w(helpfile));
250
253
254 return S_OK;
255}
static const TCHAR helpfile[]
Definition: dialog.c:19
WCHAR * help_file
Definition: errorinfo.c:42

◆ create_errorinfo_SetSource()

static HRESULT WINAPI create_errorinfo_SetSource ( ICreateErrorInfo iface,
LPOLESTR  source 
)
static

Definition at line 221 of file errorinfo.c.

222{
224
225 TRACE("%p, %s.\n", iface, debugstr_w(source));
226
229
230 return S_OK;
231}
WCHAR * source
Definition: errorinfo.c:40

◆ CreateErrorInfo()

HRESULT WINAPI CreateErrorInfo ( ICreateErrorInfo **  ret)

Definition at line 318 of file errorinfo.c.

319{
320 struct error_info *error_info;
321
322 TRACE("%p.\n", ret);
323
324 if (!ret) return E_INVALIDARG;
325
326 if (!(error_info = malloc(sizeof(*error_info))))
327 return E_OUTOFMEMORY;
328
332 error_info->refcount = 1;
337
339
340 return S_OK;
341}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_INVALIDARG
Definition: ddrawi.h:101
#define malloc
Definition: debug_ros.c:4
#define NULL
Definition: types.h:112
static const IErrorInfoVtbl errorinfo_vtbl
Definition: errorinfo.c:180
static const ISupportErrorInfoVtbl support_errorinfo_vtbl
Definition: errorinfo.c:307
static const ICreateErrorInfoVtbl create_errorinfo_vtbl
Definition: errorinfo.c:268
return ret
Definition: mutex.c:146
ISupportErrorInfo ISupportErrorInfo_iface
Definition: errorinfo.c:36
LONG refcount
Definition: errorinfo.c:37
ICreateErrorInfo ICreateErrorInfo_iface
Definition: errorinfo.c:35

Referenced by test_error_info().

◆ errorinfo_AddRef()

static ULONG WINAPI errorinfo_AddRef ( IErrorInfo iface)
static

Definition at line 92 of file errorinfo.c.

93{
96
97 TRACE("%p, refcount %lu.\n", iface, refcount);
98
99 return refcount;
100}
#define InterlockedIncrement
Definition: armddk.h:53
static struct error_info * impl_from_IErrorInfo(IErrorInfo *iface)
Definition: errorinfo.c:46
uint32_t ULONG
Definition: typedefs.h:59

◆ errorinfo_GetDescription()

static HRESULT WINAPI errorinfo_GetDescription ( IErrorInfo iface,
BSTR description 
)
static

Definition at line 143 of file errorinfo.c.

144{
146
147 TRACE("%p, %p.\n", iface, description);
148
149 if (!description)
150 return E_INVALIDARG;
152 return S_OK;
153}
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:238

◆ errorinfo_GetGUID()

static HRESULT WINAPI errorinfo_GetGUID ( IErrorInfo iface,
GUID guid 
)
static

Definition at line 120 of file errorinfo.c.

121{
123
124 TRACE("%p, %p.\n", iface, guid);
125
126 if (!guid) return E_INVALIDARG;
127 *guid = error_info->guid;
128 return S_OK;
129}

◆ errorinfo_GetHelpContext()

static HRESULT WINAPI errorinfo_GetHelpContext ( IErrorInfo iface,
DWORD help_context 
)
static

Definition at line 167 of file errorinfo.c.

168{
170
171 TRACE("%p, %p.\n", iface, help_context);
172
173 if (!help_context)
174 return E_INVALIDARG;
176
177 return S_OK;
178}

◆ errorinfo_GetHelpFile()

static HRESULT WINAPI errorinfo_GetHelpFile ( IErrorInfo iface,
BSTR helpfile 
)
static

Definition at line 155 of file errorinfo.c.

156{
158
159 TRACE("%p, %p.\n", iface, helpfile);
160
161 if (!helpfile)
162 return E_INVALIDARG;
164 return S_OK;
165}

◆ errorinfo_GetSource()

static HRESULT WINAPI errorinfo_GetSource ( IErrorInfo iface,
BSTR source 
)
static

Definition at line 131 of file errorinfo.c.

132{
134
135 TRACE("%p, %p.\n", iface, source);
136
137 if (!source)
138 return E_INVALIDARG;
140 return S_OK;
141}

◆ errorinfo_QueryInterface()

static HRESULT WINAPI errorinfo_QueryInterface ( IErrorInfo iface,
REFIID  riid,
void **  obj 
)
static

Definition at line 61 of file errorinfo.c.

62{
64
65 TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), obj);
66
67 *obj = NULL;
68
69 if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IErrorInfo))
70 {
72 }
73 else if (IsEqualIID(riid, &IID_ICreateErrorInfo))
74 {
76 }
77 else if (IsEqualIID(riid, &IID_ISupportErrorInfo))
78 {
80 }
81
82 if (*obj)
83 {
84 IUnknown_AddRef((IUnknown *)*obj);
85 return S_OK;
86 }
87
88 WARN("Unsupported interface %s.\n", debugstr_guid(riid));
89 return E_NOINTERFACE;
90}
#define WARN(fmt,...)
Definition: precomp.h:61
const GUID IID_IUnknown
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ errorinfo_Release()

static ULONG WINAPI errorinfo_Release ( IErrorInfo iface)
static

Definition at line 102 of file errorinfo.c.

103{
106
107 TRACE("%p, refcount %lu.\n", iface, refcount);
108
109 if (!refcount)
110 {
115 }
116
117 return refcount;
118}
#define InterlockedDecrement
Definition: armddk.h:52

◆ GetErrorInfo()

HRESULT WINAPI GetErrorInfo ( ULONG  reserved,
IErrorInfo **  error_info 
)

Definition at line 346 of file errorinfo.c.

347{
348 struct tlsdata *tlsdata;
349 HRESULT hr;
350
351 TRACE("%lu, %p\n", reserved, error_info);
352
353 if (reserved || !error_info)
354 return E_INVALIDARG;
355
357 return hr;
358
359 if (!tlsdata->errorinfo)
360 {
361 *error_info = NULL;
362 return S_FALSE;
363 }
364
367
368 return S_OK;
369}
static HRESULT com_get_tlsdata(struct tlsdata **data)
r reserved
Definition: btrfs.c:3006
#define FAILED(hr)
Definition: intsafe.h:51
HRESULT hr
Definition: shlfolder.c:183
IErrorInfo * errorinfo
#define S_FALSE
Definition: winerror.h:3451

Referenced by _com_issue_errorex(), ITypeInfo_fnInvoke(), and test_error_info().

◆ impl_from_ICreateErrorInfo()

static struct error_info * impl_from_ICreateErrorInfo ( ICreateErrorInfo iface)
static

◆ impl_from_IErrorInfo()

static struct error_info * impl_from_IErrorInfo ( IErrorInfo iface)
static

◆ impl_from_ISupportErrorInfo()

static struct error_info * impl_from_ISupportErrorInfo ( ISupportErrorInfo iface)
static

Definition at line 56 of file errorinfo.c.

57{
58 return CONTAINING_RECORD(iface, struct error_info, ISupportErrorInfo_iface);
59}

Referenced by support_errorinfo_AddRef(), support_errorinfo_InterfaceSupportsErrorInfo(), support_errorinfo_QueryInterface(), and support_errorinfo_Release().

◆ SetErrorInfo()

HRESULT WINAPI SetErrorInfo ( ULONG  reserved,
IErrorInfo error_info 
)

Definition at line 374 of file errorinfo.c.

375{
376 struct tlsdata *tlsdata;
377 HRESULT hr;
378
379 TRACE("%lu, %p\n", reserved, error_info);
380
381 if (reserved)
382 return E_INVALIDARG;
383
385 return hr;
386
387 if (tlsdata->errorinfo)
388 IErrorInfo_Release(tlsdata->errorinfo);
389
391 if (error_info)
392 IErrorInfo_AddRef(error_info);
393
394 return S_OK;
395}

Referenced by test_error_info().

◆ support_errorinfo_AddRef()

static ULONG WINAPI support_errorinfo_AddRef ( ISupportErrorInfo iface)
static

Definition at line 286 of file errorinfo.c.

287{
289 return IErrorInfo_AddRef(&error_info->IErrorInfo_iface);
290}
static struct error_info * impl_from_ISupportErrorInfo(ISupportErrorInfo *iface)
Definition: errorinfo.c:56

◆ support_errorinfo_InterfaceSupportsErrorInfo()

static HRESULT WINAPI support_errorinfo_InterfaceSupportsErrorInfo ( ISupportErrorInfo iface,
REFIID  riid 
)
static

Definition at line 298 of file errorinfo.c.

299{
301
302 TRACE("%p, %s.\n", iface, debugstr_guid(riid));
303
304 return IsEqualIID(riid, &error_info->guid) ? S_OK : S_FALSE;
305}

◆ support_errorinfo_QueryInterface()

static HRESULT WINAPI support_errorinfo_QueryInterface ( ISupportErrorInfo iface,
REFIID  riid,
void **  obj 
)
static

Definition at line 280 of file errorinfo.c.

281{
283 return IErrorInfo_QueryInterface(&error_info->IErrorInfo_iface, riid, obj);
284}

◆ support_errorinfo_Release()

static ULONG WINAPI support_errorinfo_Release ( ISupportErrorInfo iface)
static

Definition at line 292 of file errorinfo.c.

293{
295 return IErrorInfo_Release(&error_info->IErrorInfo_iface);
296}

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( ole  )

Variable Documentation

◆ create_errorinfo_vtbl

const ICreateErrorInfoVtbl create_errorinfo_vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI create_errorinfo_SetGUID(ICreateErrorInfo *iface, REFGUID guid)
Definition: errorinfo.c:210
static HRESULT WINAPI create_errorinfo_QueryInterface(ICreateErrorInfo *iface, REFIID riid, void **obj)
Definition: errorinfo.c:192
static HRESULT WINAPI create_errorinfo_SetSource(ICreateErrorInfo *iface, LPOLESTR source)
Definition: errorinfo.c:221
static HRESULT WINAPI create_errorinfo_SetHelpFile(ICreateErrorInfo *iface, LPOLESTR helpfile)
Definition: errorinfo.c:245
static ULONG WINAPI create_errorinfo_Release(ICreateErrorInfo *iface)
Definition: errorinfo.c:204
static HRESULT WINAPI create_errorinfo_SetDescription(ICreateErrorInfo *iface, LPOLESTR description)
Definition: errorinfo.c:233
static ULONG WINAPI create_errorinfo_AddRef(ICreateErrorInfo *iface)
Definition: errorinfo.c:198
static HRESULT WINAPI create_errorinfo_SetHelpContext(ICreateErrorInfo *iface, DWORD help_context)
Definition: errorinfo.c:257

Definition at line 268 of file errorinfo.c.

Referenced by CreateErrorInfo().

◆ errorinfo_vtbl

const IErrorInfoVtbl errorinfo_vtbl
static
Initial value:
=
{
}
static ULONG WINAPI errorinfo_Release(IErrorInfo *iface)
Definition: errorinfo.c:102
static ULONG WINAPI errorinfo_AddRef(IErrorInfo *iface)
Definition: errorinfo.c:92
static HRESULT WINAPI errorinfo_GetHelpFile(IErrorInfo *iface, BSTR *helpfile)
Definition: errorinfo.c:155
static HRESULT WINAPI errorinfo_QueryInterface(IErrorInfo *iface, REFIID riid, void **obj)
Definition: errorinfo.c:61
static HRESULT WINAPI errorinfo_GetDescription(IErrorInfo *iface, BSTR *description)
Definition: errorinfo.c:143
static HRESULT WINAPI errorinfo_GetHelpContext(IErrorInfo *iface, DWORD *help_context)
Definition: errorinfo.c:167
static HRESULT WINAPI errorinfo_GetGUID(IErrorInfo *iface, GUID *guid)
Definition: errorinfo.c:120
static HRESULT WINAPI errorinfo_GetSource(IErrorInfo *iface, BSTR *source)
Definition: errorinfo.c:131

Definition at line 180 of file errorinfo.c.

Referenced by CreateErrorInfo().

◆ support_errorinfo_vtbl

const ISupportErrorInfoVtbl support_errorinfo_vtbl
static
Initial value:
=
{
}
static ULONG WINAPI support_errorinfo_AddRef(ISupportErrorInfo *iface)
Definition: errorinfo.c:286
static ULONG WINAPI support_errorinfo_Release(ISupportErrorInfo *iface)
Definition: errorinfo.c:292
static HRESULT WINAPI support_errorinfo_QueryInterface(ISupportErrorInfo *iface, REFIID riid, void **obj)
Definition: errorinfo.c:280
static HRESULT WINAPI support_errorinfo_InterfaceSupportsErrorInfo(ISupportErrorInfo *iface, REFIID riid)
Definition: errorinfo.c:298

Definition at line 307 of file errorinfo.c.

Referenced by CreateErrorInfo().