ReportEventA 関数 (winbase.h)

指定したイベント ログの末尾にエントリを書き込みます。

構文

BOOL ReportEventA(
  [in] HANDLE hEventLog,
  [in] WORD   wType,
  [in] WORD   wCategory,
  [in] DWORD  dwEventID,
  [in] PSID   lpUserSid,
  [in] WORD   wNumStrings,
  [in] DWORD  dwDataSize,
  [in] LPCSTR *lpStrings,
  [in] LPVOID lpRawData
);

パラメーター

[in] hEventLog

イベント ログへのハンドル。 RegisterEventSource 関数は、このハンドルを返します。

SP2 を使用した Windows XP の時点では、このパラメーターを セキュリティ ログへのハンドルにすることはできません。 セキュリティ ログにイベントを書き込むには、AuthzReportSecurityEvent 関数を使用します。

[in] wType

ログに記録されるイベントの種類。 このパラメーターには、次の値のいずれかを指定できます。

意味
EVENTLOG_SUCCESS
0x0000
情報イベント
EVENTLOG_AUDIT_FAILURE
0x0010
失敗監査イベント
EVENTLOG_AUDIT_SUCCESS
0x0008
成功監査イベント
EVENTLOG_ERROR_TYPE
0x0001
エラー イベント
EVENTLOG_INFORMATION_TYPE
0x0004
情報イベント
EVENTLOG_WARNING_TYPE
0x0002
警告イベント
 

イベントの種類の詳細については、「 イベントの種類」を参照してください。

[in] wCategory

イベント カテゴリ。 これはソース固有の情報です。カテゴリには任意の値を指定できます。 詳細については、「 イベント カテゴリ」を参照してください。

[in] dwEventID

イベント識別子。 イベント識別子は、イベント ソースに関連付けられているメッセージ ファイル内のエントリを指定します。 詳細については、「 イベント識別子」を参照してください。

[in] lpUserSid

現在のユーザーのセキュリティ識別子へのポインター。 セキュリティ識別子が必要ない場合、このパラメーターは NULL にすることができます。

[in] wNumStrings

lpStrings パラメーターが指す配列内の挿入文字列の数。 値 0 は、文字列が存在しないことを示します。

[in] dwDataSize

ログに書き込むイベント固有の生 (バイナリ) データのバイト数。 このパラメーターが 0 の場合、イベント固有のデータは存在しません。

[in] lpStrings

ユーザーに文字列を表示する前にメッセージにマージされる null で終わる文字列の配列イベント ビューアー含むバッファーへのポインター。 wNumStrings が 0 の場合でも、このパラメーターは有効なポインター (または NULL) である必要があります。 各文字列は 31,839 文字に制限されています。

Windows Vista より前: 各文字列は 32,000 文字に制限されています。

[in] lpRawData

バイナリ データを含むバッファーへのポインター。 dwDataSize パラメーターが 0 の場合でも、このパラメーターは有効なポインター (または NULL) である必要があります。

戻り値

関数が成功した場合、戻り値は 0 以外であり、エントリがログに書き込まれたことを示します。

関数が失敗した場合は、0 を返します。 拡張エラー情報を取得するには、 GetLastError を呼び出します。これは、次のいずれかの拡張エラー コードを返します。

エラー コード 意味
ERROR_INVALID_PARAMETER
パラメーターの 1 つが無効です。

このエラーは、ログに記録されるメッセージ データが大きすぎる場合、Windows Server 2003 で返されます。 dwDataSize パラメーターが 261,991 (0x3ff67) を超える場合、このエラーは Windows Server 2003 上の RPC サーバーによって返されます。

ERROR_NOT_ENOUGH_MEMORY
操作を完了するために使用できるメモリ リソースが不足しています。
RPC_S_INVALID_BOUND
配列の境界が無効です。

このエラーは、ログに記録されるメッセージ データが大きすぎる場合に返されます。 Windows Vista 以降では、 dwDataSize パラメーターが 61,440 (0xf000) を超える場合、このエラーが返されます。

RPC_X_BAD_STUB_DATA
スタブが正しくないデータを受け取りました。

このエラーは、ログに記録されるメッセージ データが大きすぎる場合に Windows XP で返されます。 dwDataSize パラメーターが 262,143 (0x3ffff) を超える場合、このエラーは Windows XP 上の RPC サーバーによって返されます。

その他
FormatMessage を使用して、返されたエラーのメッセージ文字列を取得します。

注釈

この関数は、イベントをログに記録するために使用されます。 エントリは、 hEventLog パラメーターによって識別されるソースに対して構成されたログの末尾に書き込まれます。 ReportEvent 関数は、ログにエントリを格納する前に、時刻、エントリの長さ、オフセットを追加します。 関数でユーザー名を追加できるようにするには、 lpUserSid パラメーターにユーザーの SID を指定する必要があります。

メッセージ データのサイズには、アプリケーションが実行されているクライアントとメッセージがログに記録されるサーバーの両方で使用される Windows のバージョンに応じて、ログに記録できるサイズ制限が異なります。 サーバーは、RegisterEventSource 関数に渡される lpUNCServerName パラメーターによって決定されます。 Windows のバージョンに依存するサイズ制限を超えると、さまざまなエラーが返されます。

ログに記録する文字列に %n が含まれている場合( n は整数値 (%1 など))、イベント ビューアーはそれを挿入文字列として扱います。 IPv6 アドレスにはこの文字シーケンスを含めることができるため、書式指定子 (!S!)IPv6 アドレスを含むイベント メッセージをログに記録します。 この指定子は、文字列をリテラルで使用し、それ以上の拡張を実行しないように書式設定コードに指示します (たとえば、"IPv6 アドレスは:%1!S!").

例については、「 イベントの報告」を参照してください。

注意

winbase.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして ReportEvent を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー winbase.h (Windows.h を含む)
Library Advapi32.lib
[DLL] Advapi32.dll

こちらもご覧ください

ClearEventLog

CloseEventLog

イベント ログ ファイルの形式

イベント ログ関数

OpenEventLog

ReadEventLog

RegisterEventSource