Win32API: FormatMessage

指定したエラーコードに対応するエラーメッセージ文字列を取得します。


定義
Declare Function FormatMessage Lib "kernel32" Alias "FormatMessageA" _
         (dwFlags As DWord, _
          lpSource As VoidPtr, _
          dwMessageId As DWord, _
          dwLanguageId As DWord, _
          lpBuffer As BytePtr, _
          nSize As DWord, _
          Arguments As DWordPtr) As DWord
dwFlags
オプションフラグを、以下の定数の組み合わせで指定します。
定数説明
FORMAT_MESSAGE_ALLOCATE_BUFFERFormatMessage関数に、エラーメッセージを格納するための文字列バッファの確保を要求します。このフラグを指定した場合、lpBuffer パラメータには、文字列ポインタへのポインタを指定します。また、このフラグにより取得したバッファが不要になったときは、LocalFree関数でメモリから解放する必要があります。
FORMAT_MESSAGE_IGNORE_INSERTSArguments パラメータを無視します。
FORMAT_MESSAGE_FROM_STRINGlpSource パラメータを有効にします。lpSource パラメータでは、NULLで終わる文字列を指定します。FORMAT_MESSAGE_FROM_HMODULE、FORMAT_MESSAGE_FROM_SYSTEM と同時に指定することはできません。
FORMAT_MESSAGE_FROM_HMODULElpSource パラメータを有効にし、メッセージ定義リソースを使用するようにします。lpSource パラメータには、モジュールハンドルを指定します。FORMAT_MESSAGE_FROM_SYSTEM と同時に指定することはできません。
FORMAT_MESSAGE_FROM_SYSTEMシステム定義のメッセージを取得します。
FORMAT_MESSAGE_ARGUMENT_ARRAYArguments パラメータを、32ビット値の配列へのポインタとします。

lpSource
FORMAT_MESSAGE_FROM_STRING フラグを指定したときは、NULL で終わる文字列へのポインタを指定します。
FORMAT_MESSAGE_FROM_HMODULE フラグを指定したときは、モジュールハンドルを指定します。
それ以外の場合は無視されます。

dwMessageId
メッセージID(エラーコード)を指定します。エラーコードを取得するには、GetLastError関数を使用します。

dwLanguageId
言語IDを指定します。現在のユーザーのデフォルトの言語を使用する場合は、LANG_USER_DEFAULT を指定します。

lpBuffer
メッセージを格納するたのバッファへのポインタを指定します。
FORMAT_MESSAGE_ALLOCATE_BUFFER フラグを指定したときは、バッファポインタへのポインタを指定します。

nSize
lpBuffer パラメータで指定したバッファのサイズを指定します。
FORMAT_MESSAGE_ALLOCATE_BUFFER フラグを指定したときは、FormatMessage関数に割り当てさせるバッファの最小サイズを指定します。

Arguments
挿入句を、32ビット値の配列へのポインタとして指定します。

戻り値

文字列のバイト数が返ります。

環境情報

インクルード ファイル: api_system.sbp 内で定義済み
DLLファイル: kernel32.dll

サンプル

'lpMsgBufにエラーメッセージが格納されます。
Dim lpMsgBuf As BytePtr
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER or FORMAT_MESSAGE_FROM_SYSTEM or FORMAT_MESSAGE_IGNORE_INSERTS, _
    NULL, _
    GetLastError(), _
    LANG_USER_DEFAULT, _
    VarPtr(lpMsgBuf), _
    0, _
    NULL)
MessageBox(0,lpMsgBuf,"Error msg",MB_OK)
LocalFree(lpMsgBuf)

GetLastError関数