Implemented the ErrorInfo interfaces.
diff --git a/include/oleauto.h b/include/oleauto.h
index eb2334f..f7877d1 100644
--- a/include/oleauto.h
+++ b/include/oleauto.h
@@ -3,6 +3,8 @@
#include "wtypes.h"
#include "wine/obj_oleaut.h"
+#include "wine/obj_errorinfo.h"
+
#ifndef __WINE__
#include "oaidl.h"
#endif
diff --git a/include/oleidl.h b/include/oleidl.h
index 34b4865..6abc662 100644
--- a/include/oleidl.h
+++ b/include/oleidl.h
@@ -20,6 +20,7 @@
#include "wine/obj_cache.h"
#include "wine/obj_oleobj.h"
#include "wine/obj_oleview.h"
+#include "wine/obj_errorinfo.h"
#endif /* __WINE_OLEIDL_H */
diff --git a/include/thread.h b/include/thread.h
index f0406864..c120025 100644
--- a/include/thread.h
+++ b/include/thread.h
@@ -107,7 +107,7 @@
DWORD pad8[3]; /* --n f10 */
PVOID ReservedForNtRpc; /* -2- f1c used by rpcrt4 */
DWORD pad9[24]; /* --n f20 */
- PVOID ReservedForOle; /* -2- f80 used by ole32 (IErrorInfo*) */
+ PVOID ErrorInfo; /* -2- f80 used by ole32 (IErrorInfo*) */
} TEB;
/* Thread exception flags */
diff --git a/include/wine/obj_errorinfo.h b/include/wine/obj_errorinfo.h
new file mode 100644
index 0000000..59bc25d
--- /dev/null
+++ b/include/wine/obj_errorinfo.h
@@ -0,0 +1,115 @@
+/*
+ * Defines the COM interfaces and APIs related to ErrorInfo
+ */
+
+#ifndef __WINE_WINE_OBJ_ERRORINFO_H
+#define __WINE_WINE_OBJ_ERRORINFO_H
+
+#include "wine/obj_base.h"
+#include "wine/obj_oleaut.h"
+
+DEFINE_GUID(IID_IErrorInfo,0x1CF2B120,0x547D,0x101B,0x8E,0x65,0x08,0x00,0x2B,0x2B,0xD1,0x19);
+typedef struct IErrorInfo IErrorInfo,*LPERRORINFO;
+
+DEFINE_GUID(IID_ICreateErrorInfo,0x22F03340,0x547D,0x101B,0x8E,0x65,0x08,0x00,0x2B,0x2B,0xD1,0x19);
+typedef struct ICreateErrorInfo ICreateErrorInfo,*LPCREATEERRORINFO;
+
+DEFINE_GUID(IID_ISupportErrorInfo,0xDF0B3D60,0x547D,0x101B,0x8E,0x65,0x08,0x00,0x2B,0x2B,0xD1,0x19);
+typedef struct ISupportErrorInfo ISupportErrorInfo,*LPSUPPORTERRORINFO;
+
+/*****************************************************************************
+ * IErrorInfo
+ */
+#define ICOM_INTERFACE IErrorInfo
+#define IErrorInfo_METHODS \
+ ICOM_METHOD1(HRESULT, GetGUID, const GUID ** , pGUID) \
+ ICOM_METHOD1(HRESULT, GetSource, BSTR* ,pBstrSource) \
+ ICOM_METHOD1(HRESULT, GetDescription, BSTR*, pBstrDescription) \
+ ICOM_METHOD1(HRESULT, GetHelpFile, BSTR*, pBstrHelpFile) \
+ ICOM_METHOD1(HRESULT, GetHelpContext, DWORD*, pdwHelpContext)
+#define IErrorInfo_IMETHODS \
+ IUnknown_IMETHODS \
+ IDispatch_IMETHODS \
+ IErrorInfo_METHODS
+
+ICOM_DEFINE(IErrorInfo, IDispatch)
+#undef ICOM_INTERFACE
+
+/*** IUnknown methods ***/
+#define IErrorInfo_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
+#define IErrorInfo_AddRef(p) ICOM_CALL (AddRef,p)
+#define IErrorInfo_Release(p) ICOM_CALL (Release,p)
+/*** IDispatch methods ***/
+#define IErrorInfo_GetTypeInfoCount(p,a) ICOM_CALL1 (GetTypeInfoCount,p,a)
+#define IErrorInfo_GetTypeInfo(p,a,b,c) ICOM_CALL3 (GetTypeInfo,p,a,b,c)
+#define IErrorInfo_GetIDsOfNames(p,a,b,c,d,e) ICOM_CALL5 (GetIDsOfNames,p,a,b,c,d,e)
+#define IErrorInfo_Invoke(p,a,b,c,d,e,f,g,h) ICOM_CALL8 (Invoke,p,a,b,c,d,e,f,g,h)
+/*** IErrorInfo methods ***/
+#define IErrorInfo_GetGUID(p,a) ICOM_CALL1 (GetGUID,p,a)
+#define IErrorInfo_GetSource(p,a) ICOM_CALL1 (GetSource,p,a)
+#define IErrorInfo_GetDescription(p,a) ICOM_CALL1 (GetDescription,p,a)
+#define IErrorInfo_GetHelpFile(p,a) ICOM_CALL1 (GetHelpFile,p,a)
+#define IErrorInfo_GetHelpContext(p,a) ICOM_CALL1 (GetHelpContext,p,a)
+
+/*****************************************************************************
+ * ICreateErrorInfo
+ */
+#define ICOM_INTERFACE ICreateErrorInfo
+#define ICreateErrorInfo_METHODS \
+ ICOM_METHOD1(HRESULT, SetGUID, REFGUID, rguid) \
+ ICOM_METHOD1(HRESULT, SetSource, LPOLESTR, szSource) \
+ ICOM_METHOD1(HRESULT, SetDescription, LPOLESTR, szDescription) \
+ ICOM_METHOD1(HRESULT, SetHelpFile, LPOLESTR, szHelpFile) \
+ ICOM_METHOD1(HRESULT, SetHelpContext, DWORD, dwHelpContext)
+#define ICreateErrorInfo_IMETHODS \
+ IUnknown_IMETHODS \
+ IDispatch_IMETHODS \
+ ICreateErrorInfo_METHODS
+
+ICOM_DEFINE(ICreateErrorInfo, IDispatch)
+#undef ICOM_INTERFACE
+
+/*** IUnknown methods ***/
+#define ICreateErrorInfo_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
+#define ICreateErrorInfo_AddRef(p) ICOM_CALL (AddRef,p)
+#define ICreateErrorInfo_Release(p) ICOM_CALL (Release,p)
+/*** ICreateErrorInfo methods ***/
+#define ICreateErrorInfo_GetTypeInfoCount(p,a) ICOM_CALL1 (GetTypeInfoCount,p,a)
+#define ICreateErrorInfo_GetTypeInfo(p,a,b,c) ICOM_CALL3 (GetTypeInfo,p,a,b,c)
+#define ICreateErrorInfo_GetIDsOfNames(p,a,b,c,d,e) ICOM_CALL5 (GetIDsOfNames,p,a,b,c,d,e)
+#define ICreateErrorInfo_Invoke(p,a,b,c,d,e,f,g,h) ICOM_CALL8 (Invoke,p,a,b,c,d,e,f,g,h)
+/*** ICreateErrorInfo methods ***/
+#define ICreateErrorInfo_SetGUID(p,a) ICOM_CALL1 (SetGUID,p,a)
+#define ICreateErrorInfo_SetSource(p,a) ICOM_CALL1 (SetSource,p,a)
+#define ICreateErrorInfo_SetDescription(p,a) ICOM_CALL1 (SetDescription,p,a)
+#define ICreateErrorInfo_SetHelpFile(p,a) ICOM_CALL1 (SetHelpFile,p,a)
+#define ICreateErrorInfo_SetHelpContext(p,a) ICOM_CALL1 (SetHelpContext,p,a)
+
+/*****************************************************************************
+ * ISupportErrorInfo
+ */
+#define ICOM_INTERFACE ISupportErrorInfo
+#define ISupportErrorInfo_METHODS \
+ ICOM_METHOD1(HRESULT, InterfaceSupportsErrorInfo, REFIID, riid )
+#define ISupportErrorInfo_IMETHODS \
+ IUnknown_IMETHODS \
+ IDispatch_IMETHODS \
+ ISupportErrorInfo_METHODS
+
+ICOM_DEFINE(ISupportErrorInfo, IDispatch)
+#undef ICOM_INTERFACE
+
+/*** IUnknown methods ***/
+#define ISupportErrorInfo_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
+#define ISupportErrorInfo_AddRef(p) ICOM_CALL (AddRef,p)
+#define ISupportErrorInfo_Release(p) ICOM_CALL (Release,p)
+/*** ISupportErrorInfo methods ***/
+#define ISupportErrorInfo_GetTypeInfoCount(p,a) ICOM_CALL1 (GetTypeInfoCount,p,a)
+#define ISupportErrorInfo_GetTypeInfo(p,a,b,c) ICOM_CALL3 (GetTypeInfo,p,a,b,c)
+#define ISupportErrorInfo_GetIDsOfNames(p,a,b,c,d,e) ICOM_CALL5 (GetIDsOfNames,p,a,b,c,d,e)
+#define ISupportErrorInfo_Invoke(p,a,b,c,d,e,f,g,h) ICOM_CALL8 (Invoke,p,a,b,c,d,e,f,g,h)
+/*** ISupportErrorInfo methods ***/
+#define ISupportErrorInfo_InterfaceSupportsErrorInfo(p,a) ICOM_CALL1 (InterfaceSupportsErrorInfo,p,a)
+
+
+#endif /* __WINE_WINE_OBJ_ERRORINFO_H */
diff --git a/include/wine/obj_oleaut.h b/include/wine/obj_oleaut.h
index 5ebca28..87c296d 100644
--- a/include/wine/obj_oleaut.h
+++ b/include/wine/obj_oleaut.h
@@ -46,18 +46,6 @@
DEFINE_OLEGUID(IID_ITypeInfo2, 0x00020412,0,0);
typedef struct ITypeInfo2 ITypeInfo2,*LPTYPEINFO2;
-DEFINE_GUID(IID_IErrorInfo, 0x1CF2B120,0x547D,0x101B,0x8E,0x65,
- 0x08,0x00, 0x2B,0x2B,0xD1,0x19);
-typedef struct IErrorInfo IErrorInfo,*LPERRORINFO;
-
-DEFINE_GUID(IID_ICreateErrorInfo, 0x22F03340,0x547D,0x101B,0x8E,0x65,
- 0x08,0x00, 0x2B,0x2B,0xD1,0x19);
-typedef struct ICreateErrorInfo ICreateErrorInfo,*LPCREATEERRORINFO;
-
-DEFINE_GUID(IID_ISupportErrorInfo, 0xDF0B3D60,0x547D,0x101B,0x8E,0x65,
- 0x08,0x00, 0x2B,0x2B,0xD1,0x19);
-typedef struct ISupportErrorInfo ISupportErrorInfo,*LPSUPPORTERRORINFO;
-
/*****************************************************************************
* Automation data types
*/