GetLastError()から得られたエラーコードは文字列記述を得る


Windowsで関数呼び出しのたびに、エラーが発生した場合はGetLastError関数でエラーコードを取得できます.
エラー記述を取得する方法を示す関数を作成します.
    LPSTR ConvertErrorCodeToString(DWORD ErrorCode)  
    {  
    HLOCAL LocalAddress=NULL;  
    FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_IGNORE_INSERTS|FORMAT_MESSAGE_FROM_SYSTEM,  
         NULL,ErrorCode,0,(PTSTR)&LocalAddress,0,NULL);  
    return (LPSTR)LocalAddress;  
    }  
関数のパラメータErrorCodeは誤ったID番号であり、GetLastError()で得ることができる.文字列ポインタを返します.
FormatMessage関数の使用:
DWORD FormatMessage(     DWORD dwFlags,     LPCVOID lpSource,     DWORD dwMessageId,     DWORD dwLanguageId,     LPTSTR lpBuffer,     DWORD nSize,     va_list* Arguments     ); dwFlags: # FORMAT_MESSAGE_ALLOCATE_BUFFER//この関数では、記述文字列を含むメモリが割り当てられます.#FORMAT_MESSAGE_FROM_SYSTEM,//システムのidマッピングテーブルで記述文字列を探します#FORMAT_MESSAGE_FROM_HMODULE//他のリソースモジュールで説明文字列を探す#FORMAT_MESSAGE_FROM_STRING//メッセージIDは文字列であり、DWORDではなく通常:FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM lpSource:#FORMAT_が指定されていますMESSAGE_FROM_HMODULEの場合、このパラメータはモジュールのHANDLE#がFORMAT_を指定していることを示しますMESSAGE_FROM_STRINGの場合、このパラメータはid文字列が通常:NULL dwMessageId:メッセージID;FORMAT_を指定した場合MESSAGE_FROM_STRING、無視されます.dwLanguageId:メッセージ記述に使用される言語は、通常、0はlpBufferを自動的に選択することを示す:#FORMATが指定されていない場合MESSAGE_ALLOCATE_BUFFERは、自分が提供したバッファ#がシステムLocalAllocに割り当てられていない場合、ユーザーLocalFree nSize:#FORMAT_が指定されていない場合MESSAGE_ALLOCATE_BUFFERは、自分が提供したバッファサイズ#以外はシステムLocalAllocに割り当てられた最小バッファサイズArguments:NULLの値を保持