WinAPI: How to Get Last Error from Windows API Functions Stack (GetLastError)
The following algorithm demonstrates how to get last error from Windows API functions stack. The algorithm uses 2 functions imported from kernel32: GetLastError and FormatMessage:
[DllImport("kernel32.dll", CharSet=CharSet.Auto)] public static extern int GetLastError(); [DllImport("kernel32.dll", CharSet=CharSet.Auto)] public static extern int FormatMessage(int dwFlags, string lpSource, int dwMessageId, int dwLanguageId, StringBuilder lpBuffer, int nSize, string[] Arguments);
The following piece of code in C# utilizes WinAPI functions defined above to get formatted error message as string:
public static string GetLastErrorMessage() { StringBuilder strLastErrorMessage = new StringBuilder(255); int ret2 = GetLastError(); int dwFlags = 4096; int ret3 = FormatMessage(dwFlags, null, ret2, 0, strLastErrorMessage, strLastErrorMessage.Capacity, null); return strLastErrorMessage.ToString(); }
Enjoy :)
Thursday, April 17, 2008 1:42 AM