コードからエラーテキストを取得するための関数のリスト(WinAPI)



こんにちは!

コードからエラーのテキストを取得するための関数の概要を紹介します。これは、 エラー検索プログラムに示されています。

1. FormatMessage

この関数は、見かけほど単純ではありません(上記のプログラムの機能のほとんどは、システムエラーコードだけでなく、ポイント2を受信するように構成できるため、このプログラムを介して実装されます)。 デフォルトでは、関数はシステムエラーコードを返します。

例:
この関数は、 システムエラーコードからエラーテキストを取得します

//      FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, 1337, 0, lpszBuffer, cchBuffer, NULL); printf("Error Code: %d\nError Name: %s", 1337, lpszBuffer); 


結果:
 Error Code: 1337 Error Text:     . 

2. FormatMessage + FORMAT_MESSAGE_FROM_HMODULE

FORMAT_MESSAGE_FROM_HMODULEフラグが設定されている場合、エラーのリストがあるモジュール(DLL)からエラーのリストをロードできます。


プロジェクトでこのメソッドを使用することもできます。メッセージテーブルリソースをライブラリにパックするだけです(ありがとうertaquo

例:
この例では、エラーデータベースはntdll.dllファイルからロードされます。

 //  ntdll.dll    NTSTATUS  FormatMessage(FORMAT_MESSAGE_FROM_HMODULE, LoadLibrary("ntdll.dll"), -1072037872, 0, lpszBuffer, cchBuffer, NULL); printf("Error Code: %d\nError Name: %s", -1072037872, lpszBuffer); 


結果:
 Error Code: -1072037872 Error Text:          . 

3. DXGetErrorStringおよびDXGetErrorDescription



例:
DirectXエラーを受信する例:

 //   DirectX  printf("Error Code: %d\nError Name: %s\nError Text: %s", 1337, DXGetErrorString((HRESULT)1337), DXGetErrorDescription((HRESULT)1337)); 


結果:
 Error Code: 1337 Error Name: ERROR_INVALID_SID Error Text: The security ID structure is invalid. 

4. RasGetErrorString

RAS関数ライブラリからエラーテキストを取得するためのこの関数

例:
関数はRASエラーコードからエラーテキストを取得します

 //    RAS  RasGetErrorString(633, lpszBuffer, cchBuffer); printf("Error Code %d\nError Text: %s", 633, lpszBuffer); 


結果:
 Error Code: 633 Error Text:          . 

5. GetIpErrorString

IPヘルパーライブラリからエラーテキストを取得するこの関数

例:
関数はエラーテキストを受け取ります。

 //    IP Helper Library GetIpErrorString(12, lpszBuffer, cchBuffer); printf("Error Code %d\nError Text: %s", 12, lpszBuffer); 


結果:
 Error Code: 12 Error Text: General failure. 

ボーナス

プログラムダウンロードリンク

Source: https://habr.com/ru/post/J149116/


All Articles