
こんにちは!
コードからエラーのテキストを取得するための関数の概要を紹介します。これは、 エラー検索プログラムに示されています。
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)からエラーのリストをロードできます。
- ntdll.dll- NTSTATUSエラーリスト
- wininet.dll wininetエラーリスト
- pdh.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
- DXGetErrorString-エラー名を取得する関数( ERROR_INVALID_SIDなど )
- DXGetErrorDescription-エラーテキストを取得する関数(たとえば、 セキュリティID構造が無効です。 )
例:
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.