HANDLE RegisterEventSource( LPCTSTR ServerName, LPCTSTR SourceName);
本関数はNTで使用可能。
本関数によってオープンしたイベントログをクローズするには、DeregisterEventSourceを使用する。
引数の意味は以下の通り。
| ServerName | オープンするイベントログが存在するサーバのUNC名。NULLを指定した場合、ローカルマシンが指定されたものとみなされる。 |
| SourceName | イベントのソース名。ReportEventによってイベントを書き込む際にこの情報が参照される。 |
戻り値は、オープンした結果のイベントログのハンドルである。関数の実行に失敗した場合、NULLが返される。
-------------------------------- 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);
}