//zeige alle Fehler an / richard@borwinius.de // ftp://ftp.oreilly.com/pub/examples/windows/winlog/CDROM/BOOK/CH06/LISTMSG/ #include #include #include void DisplayErrorText(DWORD dwLastError); //------------------------------------------------- // max 20000 Messages int main(void) { int i; for (i=0;i<20000;i++) { DisplayErrorText(i); } return 0; } //------------------------------------------------- void DisplayErrorText(DWORD dwLastError) { HMODULE hModule = NULL; // default to system source LPSTR MessageBuffer; DWORD dwBufferLength; DWORD dwFormatFlags = FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM ; // // Call FormatMessage() to allow for message // text to be acquired from the system // or from the supplied module handle. // if(dwBufferLength = FormatMessageA( dwFormatFlags, NULL,//hModule, // module to get message from (NULL == system) dwLastError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // default language (LPSTR) &MessageBuffer, 0, NULL )) { DWORD dwBytesWritten; printf("%05d\t0x%x\t%s\n",dwLastError,dwLastError,MessageBuffer); // // Output message string on stderr. // //WriteFile( GetStdHandle(STD_ERROR_HANDLE),MessageBuffer, dwBufferLength, &dwBytesWritten, NULL ); // // Free the buffer allocated by the system. // LocalFree(MessageBuffer); } // // If we loaded a message source, unload it. // if(hModule != NULL) FreeLibrary(hModule); }