BOOL ReportEvent( HANDLE hEventLog, WORD EventType, WORD Category, DWORD EventId, PSID UserSid, WORD StringNum, DWORD DataSize, LPCTSTR *StringArray, LPVOID Data);
本関数はNTで使用可能。
引数の意味は以下の通り。
| hEventLog | 書き込み先のイベントログを識別するハンドル。RegisterEventSourceで取得したものでなければならない。 |
| EventType | イベントのタイプ。後述の表を参照。 |
| Category | イベントのカテゴリ。 |
| EventId | イベントのID。 |
| UserSid | ユーザのSID。NULLを指定可能。 |
| StringNum | 埋込み文字列の数。 |
| DataSize | 付加情報のサイズ。 |
| StringArray | 埋込み文字列の配列。 |
| Data | 付加情報。 |
EventTypeには、以下のいずれかのフラグを指定可能。
| EVENTLOG_ERROR_TYPE | エラーイベント。 |
| EVENTLOG_WARNING_TYPE | 警告イベント。 |
| EVENTLOG_INFORMATION_TYPE | 情報イベント。 |
| EVENTLOG_AUDIT_SUCCESS | 監査成功イベント。 |
| EVENTLOG_AUDIT_FAILURE | 監査失敗イベント。 |
戻り値は、関数の実行に成功したか否かを表す真偽値である。
-------------------------------- test.mc --------------------------------
LanguageNames = (English=0x409:MSG00409)
LanguageNames = (Japanese=0x411:MSG00411)
MessageId = 1
Severity = Error
Facility = Application
SymbolicName = MSG_MEMORY_ERROR
Language = English
Memory Error.
.
Language = Japanese
メモリエラー。
.
MessageId = 2
Severity = Informational
Facility = Application
SymbolicName = MSG_FILE_NOT_FOUND
Language = English
File %1 is not equal to %2.
.
Language = Japanese
ファイル"%1"は"%2"と異なる。
.
-------------------------------- test.c --------------------------------
#include "test.h"
/* イベントログへ書き込み */
void WriteLog(void)
{
HANDLE hEventLog;
BOOL bResult;
char *FileNotFoundArgs[] = {
"src.dat",
"dest.dat"
};
/* イベントログのオープン */
hEventLog = RegisterEventSource(NULL, "Test");
if(hEventLog == NULL) printf("event log can not open.\n");
/* イベントログへ書き込みその1 */
bResult = ReportEvent(
hEventLog,
EVENTLOG_ERROR_TYPE,
0,
MSG_MEMORY_ERROR,
NULL,
0,
0,
NULL,
NULL);
if(!bResult) printf("event1 can not write.\n");
/* イベントログへ書き込みその2 */
bResult = ReportEvent(
hEventLog,
EVENTLOG_INFORMATION_TYPE,
0,
MSG_FILE_NOT_FOUND,
NULL,
2,
0,
FileNotFoundArgs,
NULL);
if(!bResult) printf("event2 can not write.\n");
/* イベントログのクローズ */
DeregisterEventSource(hEventLog);
}