public Exception GetLastException()
{
Exception lret = null;
if (myThreadPointerFieldInfo != null)
{
var pInternalThread = (IntPtr)myThreadPointerFieldInfo.GetValue(Thread.CurrentThread);
if (pInternalThread != IntPtr.Zero && myThreadOffset != -1)
{
var ppEx = Marshal.ReadIntPtr(pInternalThread, myThreadOffset);
if (ppEx != IntPtr.Zero)
{
var pEx = Marshal.ReadIntPtr(ppEx);
if (pEx != IntPtr.Zero)
{
lret = this.myConverter.ConvertFromIntPtr(pEx);
}
}
}
}
return lret;
}
}