#include "precomp.h" #define MAX_MSG_LENGTH 512 VOID OEMfprintf( IN HANDLE hHandle, IN PWCHAR pwszUnicode ) { PCHAR achOem; DWORD dwLen, dwWritten; dwLen = WideCharToMultiByte( CP_OEMCP, 0, pwszUnicode, -1, NULL, 0, NULL, NULL ); achOem = malloc(dwLen); if (achOem) { WideCharToMultiByte( CP_OEMCP, 0, pwszUnicode, -1, achOem, dwLen, NULL, NULL ); WriteFile( hHandle, achOem, dwLen-1, &dwWritten, NULL ); free(achOem); } } #define OEMprintf(pwszUnicode) \ OEMfprintf( GetStdHandle(STD_OUTPUT_HANDLE), pwszUnicode) int _cdecl wmain ( int argc, WCHAR *argv[] ) { DWORD dwMsglen; PWCHAR pwszOutput; WCHAR rgwcInput[MAX_MSG_LENGTH]; pwszOutput = NULL; do { dwMsglen = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_HMODULE, NULL, MSG_HELP, 0L, (PWCHAR)&pwszOutput, 0, NULL); if(dwMsglen == 0) { break; } OEMprintf(pwszOutput); }while(FALSE); if(pwszOutput) { LocalFree(pwszOutput); } return ERROR; }