ReportEvent

ReportEventは、イベントログにメッセージを書き込む・・・。

ReportEvent 関数

イベントログの出力はちゃんとやろうとすると結構面倒なので、今回は割と単純にログ出力するだけ・・・。

まず、TCHAR *型の文字列バッファポインタptszTextを宣言し、newでメモリを確保・・・。
_tcscpyで表示する文字列"Test EventLog Message"をセット・・・。

RegisterEventSourceでイベントソース(そのイベントが起きたアプリとでも思っておけばいい・・・。)を登録・・・。
第1引数は、サーバ名を指定するらしいが、PCローカルのログなのでNULL・・・。
第2引数は、イベントソース・・・。"ReportEvent"にしておいた・・・。
成功すると、ハンドルhEventLogが返るので、これをReportEventに渡す・・・。

EVENTLOG_INFORMATION_TYPEは情報イベントであることを示す・・・。
カテゴリは適当に100・・・。
イベントIDも適当に1001・・・。
ユーザ識別子はNULLでいい・・・。
出力する文字列の数は1・・・。
バイナリデータつけないので0・・・。
メッセージ文字列の配列のアドレスを指定するので、ptszTextのさらにアドレスを(LPCTSTR *)にキャストして渡す・・・。
バイナリデータはNULL・・・。

最後に、イベントログのハンドルを閉じて、ptszTextを解放・・・。

実行すると、

続行するには何かキーを押してください . . .

成功なら、アプリからは何も出力されないが、

f:id:BG1:20170315140209p:plain

こんな感じでログが出力されている・・・。
ただし、イベントIDの対応付けなどちゃんと動くために必要なものがないので、エラーみたいな文章が出ている・・・。

Sample/winapi/ReportEvent/ReportEvent/src/ReportEvent at master · bg1bgst333/Sample · GitHub