EVT_SUBSCRIBE_CALLBACK
コールバックシグネチャ
DWORD EVT_SUBSCRIBE_CALLBACK(
EVT_SUBSCRIBE_NOTIFY_ACTION Action,
void* UserContext,
EVT_HANDLE Event
);パラメーター
| フィールド | 型 | 説明 |
|---|---|---|
| Action | EVT_SUBSCRIBE_NOTIFY_ACTION | Event パラメーターにイベントとエラーコードのどちらが格納されているかを示します。指定できる通知アクションの値については、EVT_SUBSCRIBE_NOTIFY_ACTION 列挙型を参照してください。 |
| UserContext | void* | サブスクライバーが EvtSubscribe 関数に渡したコンテキストです。 |
| Event | EVT_HANDLE | イベントのハンドルです。このイベントハンドルは、コールバック関数の実行中のみ有効です。このハンドルは、イベントハンドルを受け取る任意のイベントログ関数(たとえば EvtRender や EvtFormatMessage)で使用できます。 このハンドルを閉じるために EvtClose を呼び出さないでください。コールバックから戻るときに、サービスがハンドルを閉じます。 Action パラメーターが EvtSubscribeActionError の場合は、Event を DWORD にキャストして Win32 エラーコードを取得します。 |
公式ドキュメント
クエリに一致するイベントを受け取るために EvtSubscribe 関数を呼び出す場合は、このコールバックを実装します。サービスは、クエリの条件に一致するイベントが発生したときにコールバックを呼び出します。
戻り値
サービスは、この関数が返す戻り値を無視します。
解説(Remarks)
このコールバックは、他のイベントがコールバックへ配信されるのを妨げます。そのため、実装はできるだけ短くしてください。
サブスクリプションの設定中にサービスがエラーを検出した場合、エラーが発生したことを示す通知はコールバックに届きません。
EvtSubscribe の Flags パラメーターに EvtSubscribeStrict が含まれている場合、イベントレコードが欠落したときにコールバックへ通知が届きます。この場合、Event の値は ERROR_EVT_QUERY_RESULT_STALE になります。
サブスクリプションを取り消すには、EvtSubscribe 関数が返すサブスクリプションハンドルを閉じる必要があります。
例
EVT_SUBSCRIBE_CALLBACK コールバック関数を実装する例については、Subscribing to Events を参照してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)