none
64bitOSでFormatMessageに言語ID英語を指定した場合、ERROR_RESOURCE_LANG_NOT_FOUNDが返る

    質問

  • いつもお世話になります。

     

    FormatMessage 関数を利用して英語のエラーメッセージを取得することをしているのですが、

    64bit OS では FormatMessage が失敗して、ERROR_RESOURCE_LANG_NOT_FOUND が返ります。

    ※ ためした OS は Windows Server 2003 です。

     

    32bit OS では問題なく英語でエラーメッセージが取得できます。

     

    開発は Visual Studio 2005 です。

     

    以下に実装の一部を抜粋します。何か僕の指定の仕方が悪いのでしょうか。

     

     

    Code Snippet

    LPTSTR  localBuff;

     if(!::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
          FORMAT_MESSAGE_FROM_SYSTEM |
          FORMAT_MESSAGE_IGNORE_INSERTS,
          NULL,
          errorCode,
          1033,
          (LPTSTR) &localBuff,
          0,
          NULL
         ))
     {
      // 失敗
     }

     

     

    ※ errorCode は、::GetLastError の戻り値。

     

    以上、よろしくお願いします。

    2008年9月24日 12:45