I write programs for Windows using a mix of managed and unmanaged code. The interface between the two is uncomfortable and problematic for so many reasons it deserves its own blog.
When an unmanaged exception occurs and crosses back to the managed world, the CLR will try and map it to something .NET has an exception for (OutOfMemoryException, NullReferenceException, etc...). Anything it cannot translate ends up as an SEHException. The only clue you have to go on at that point is the enigmatic HRESULT (the ErrorCode property of the exception). FormatMessage and some elbow grease may help you turn the number into something readable, but otherwise you are at the mercy of the internet:
StackTrace property I would not have a clue what was going on.
If you are not using StackTrace, you should be, right now, seriously stop reading this and add it right now, when it saves your job add comments and send money ;-)