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
  */