Error codes are unsigned 32-bit values which are private to each
calling thread. You should call the GetLastError method
immediately when a method's return value indicates that an error has
occurred. That is because some methods call SetLastError(0)
when they succeed, clearing the error code set by the most recently
failed method.
Most methods will set the last error code value when they fail; a
few methods set it when they succeed. Function failure is typically
indicated by a return value such as FALSE, NULL, INVALID_CLIENT or
SMTP_ERROR. Those methods which call SetLastError when they
succeed are noted on the method reference page.
The description of the error code is the same string that is
returned by the GetErrorString method.