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
ログに記録されるイベントの種類。 このパラメーターには、次の値のいずれかを指定できます。
イベントの種類の詳細については、「 イベントの種類」を参照してください。
[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 を呼び出します。これは、次のいずれかの拡張エラー コードを返します。
エラー コード | 意味 |
---|---|
|
パラメーターの 1 つが無効です。
このエラーは、ログに記録されるメッセージ データが大きすぎる場合、Windows Server 2003 で返されます。 dwDataSize パラメーターが 261,991 (0x3ff67) を超える場合、このエラーは Windows Server 2003 上の RPC サーバーによって返されます。 |
|
操作を完了するために使用できるメモリ リソースが不足しています。 |
|
配列の境界が無効です。
このエラーは、ログに記録されるメッセージ データが大きすぎる場合に返されます。 Windows Vista 以降では、 dwDataSize パラメーターが 61,440 (0xf000) を超える場合、このエラーが返されます。 |
|
スタブが正しくないデータを受け取りました。
このエラーは、ログに記録されるメッセージ データが大きすぎる場合に 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 |