FormatMessageを使用してGetLastErrorで得たエラーコードに対するメッセージを取得しているのですが、エラーコード 12031 は文字列が返ってきません。
(メッセージ定義として、システムメッセージテーブルリソースを指定しています。)
FormatMessageで文字列が得られないのはどんなエラーの場合なのでしょうか?
また、GetLastErrorで得たエラーコードの意味を知るにはどのような方法があるあるのでしょうか?
まず、何のAPIの使用でのエラー取得なのでしょうか?
その辺に解決の糸口が見つかるかもしれません。
とりあえず、12000でヘッダをGrepするとWININT.H内にそれらしいモノが発見できます。
#define INTERNET_ERROR_BASE 12000
またそこから見ていくと…
12031はERROR_INTERNET_CONNECTION_RESETとなっています。
Error LookupにモジュールとしてWININET.DLLを追加して12031で検索すると
「この Web ページのサーバーとの接続が切れました。」とでます。
上記はInternetAPIを使っている場合だけですが……
あう…
> とりあえず、12000でヘッダをGrepするとWININT.H内にそれらしいモノが発見できます。
WININET.Hの誤りです。
瀬戸っぷさんありがとうございます。
使っているのは InternetAPI です。Error Lookup ではWININET.DLLを追加することでエラーメッセージを取得できました。
プログラムからメッセージを取得するにはどのようにするのでしょうか?
FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
errCode,
/*MAKELANGID(LANG_ENGLISH,SUBLANG_DEFAULT),*/0,
szErr,
1024,
NULL );
WININET.DLL を参照を指定させるようなことが必要だと思うのですが。。ご存知の方いらっしゃいましたら、ご教授願います。
すみません、編集途中で送信してしましました。
上記のコードはメッセージを取得している部分のコードです。(コメントの部分がそのまま入ってしまいました。すみません。)
情報をお持ちの方よろしくお願いします。
とりあえず、下記のような方法で取れましたが…
HMODULE hWininet = NULL;
char szErrMes[MAX_PATH];
hWininet = LoadLibrary("WININET.DLL");
FormatMessage(FORMAT_MESSAGE_FROM_HMODULE, hWininet, 12031, 0, szErrMes, MAX_PATH, NULL);
FreeLibrary(hWininet);
瀬戸っぷさんありがとうございます。
できました。
FORMAT_MESSAGE_FROM_HMODULE と FORMAT_MESSAGE_FROM_SYSTEM の OR指定にしました。
助かりました。