SetupWriteTextLogError の呼び出し
SetupWriteTextLogError は、SetupAPI 固有のエラーまたは Win32 エラーに関する情報を SetupAPI テキスト ログに書き込みます。 SetupWriteTextLogError は、2 つの連続したエントリをテキスト ログに書き込みます。最初のエントリには、SetupWriteTextLog によって書き込まれたのと同じ情報が同じ形式で含まれ、2 番目のエントリには、対応するエラー コードとエラーのわかりやすい説明が記録されます。
SetupWriteTextLogError を呼び出すために、アプリケーションは SetupWriteTextLog を呼び出すために提供するのと同じ情報を提供し、さらに、SetupAPI 固有のエラーまたは Win32 エラーの値を提供します。
SetupWriteTextLogError は、最初のログ エントリを次の形式で書き込みます。
entry_prefix time_stamp カテゴリ ****インデント形式のメッセージ
SetupWriteTextLogError は、2 番目のログ エントリを次の形式で書き込みます。
entry_prefix time_stamp カテゴリ **インデント **Error:エラー番号 エラーの説明
ここで:
entry_prefix、time-stamp、カテゴリ、インデント、および書式化されたメッセージ フィールドは、「テキスト ログ セクションの本文の形式」 で説明されているものと同じです。
error-number フィールドには、エラー番号が含まれています。
error-description フィールドには、エラーのわかりやすい説明が含まれています。
次の例は、アプリケーションが通常、SetupWriteTextLogError を呼び出して、エラーに関する情報をテキスト ログに記録する方法を示しています。 この例で使用されているエラーは、システム開始エラーです。 アプリケーションは SetupWriteTextLogError を呼び出して、次のパラメーター値を与えます。
LogToken は、SetupGetThreadLogToken を呼び出すことによって取得されたか、「ログ トークン」で説明されているシステム定義のログ トークン値の 1 つであるログ トークン値に設定されます。
Category は、TXTLOG_VENDOR に設定されます。これは、ログ エントリがベンダーによって提供されたアプリケーションによって作成されることを示します。 イベント カテゴリについては、「テキスト ログのイベント カテゴリの有効化」を参照してください。
LogFlags は、TXTLOG_ERROR に設定されます。 この例では、タイム スタンプを含めたり、インデントの深さを変更したりしません。 現在のインデントの深さは、以前は 5 つのモノスペース テキストスペースに設定されていました。 インデントの深さを変更する方法については、「インデントされたログ エントリの書き込み」を参照してください。 イベント レベルについては、「テキスト ログのイベント レベルの設定」を参照してください。
Errorは、Win32 エラー コードの値 ERROR_SERVICE_ALREADY_RUNNING に設定されます。 このエラー コードの 10 進値は 1056 です。
MessageStr は TEXT("Start Service: Failed to start service 'SomeService'") に設定されます。
コンマ区切りのパラメーター リストは指定されません。
パラメーター LogToken、Category、および LogFlags は、SetupWriteTextLogError の動作に影響を与え、それはこれらのパラメーターが SetupWriteTextLog の動作に影響を与えるのと同様です。
次のコードは、SetupWriteTextLogError を呼び出して、この例のログ エントリを書き込みます。
//The LogToken value was previously returned by call to
//SetupGetThreadLogToken or one of the system-defined log token values
DWORD Category = TXTLOG_VENDOR;
DWORD Flags = TXTLOG_ERROR ;
DWORD ErrorCode = 1056; // The corresponding Win32 error code
SetupWriteTextLog(LogToken, Category, Flags, ErrorCode, TEXT("Start Service: Failed to start service 'SomeService'"),);
TXTLOG_VENDOR イベント カテゴリが有効で、テキスト ログに TXTLOG_ERROR イベント レベルが設定されている場合、このコードはテキスト ログに次のように書式設定されるエントリを作成します。
!!! : Start Service: Failed to start service 'SomeService'
!!! : Error 1056: An instance of the service is already running.
SetupWriteTextLogError は、"An instance of the service is already running." という文字列を与えて、値が 1056 の Win32 エラーを説明することに注意してください。