EvtSubscribe-Funktion (winevt.h)

Erstellt ein Abonnement, das aktuelle und zukünftige Ereignisse aus einer Kanal- oder Protokolldatei empfängt, die den angegebenen Abfragekriterien entspricht.

Syntax

EVT_HANDLE EvtSubscribe(
  [in] EVT_HANDLE             Session,
  [in] HANDLE                 SignalEvent,
  [in] LPCWSTR                ChannelPath,
  [in] LPCWSTR                Query,
  [in] EVT_HANDLE             Bookmark,
  [in] PVOID                  Context,
  [in] EVT_SUBSCRIBE_CALLBACK Callback,
  [in] DWORD                  Flags
);

Parameter

[in] Session

Eine Remotesitzung behandelt, die die EvtOpenSession-Funktion zurückgibt. Legen Sie auf NULL fest, um Ereignisse auf dem lokalen Computer zu abonnieren.

[in] SignalEvent

Der Handle zu einem Ereignisobjekt, das der Dienst signalisiert, wenn neue Ereignisse verfügbar sind, die Ihren Abfragekriterien entsprechen. Dieser Parameter muss NULL sein, wenn der Rückrufparameter nicht NULL ist.

[in] ChannelPath

Der Name des Admin- oder Betriebskanals, der die Ereignisse enthält, die Sie abonnieren möchten (Sie können keine Analyse- oder Debugkanäle abonnieren). Der Pfad ist erforderlich, wenn der Abfrageparameter eine XPath-Abfrage enthält; der Pfad wird ignoriert, wenn der Abfrageparameter eine strukturierte XML-Abfrage enthält.

[in] Query

Eine Abfrage, die die Typen von Ereignissen angibt, die der Abonnementdienst zurückgeben soll. Sie können eine XPath 1.0-Abfrage oder strukturierte XML-Abfrage angeben. Wenn Ihr XPath mehr als 20 Ausdrücke enthält, verwenden Sie eine strukturierte XML-Abfrage. Um alle Ereignisse zu empfangen, legen Sie diesen Parameter auf NULL oder "*" fest.

[in] Bookmark

Ein Handle zu einer Textmarke, die den Ausgangspunkt für das Abonnement identifiziert. Um ein Textmarke-Handle abzurufen, rufen Sie die Funktion EvtCreateBookmark auf. Sie müssen diesen Parameter festlegen, wenn der Flags-Parameter das EvtSubscribeStartAfterBookmark-Flag enthält; andernfalls NULL.

[in] Context

Ein anruferdefinierter Kontextwert, den der Abonnementdienst bei jedem Bereitstellen eines Ereignisses an den angegebenen Rückruf übergeben wird.

[in] Callback

Zeigen Sie auf Ihre EVT_SUBSCRIBE_CALLBACK Rückruffunktion, die die Abonnementereignisse empfängt. Dieser Parameter muss NULL sein, wenn der SignalEvent-Parameter nicht NULL ist.

[in] Flags

Eine oder mehrere Flags, die angeben, wann Sie mit dem Abonnieren von Ereignissen beginnen. Wenn Sie z. B. EvtSubscribeStartAtOldestRecord angeben, ruft der Dienst alle aktuellen und zukünftigen Ereignisse ab, die Ihren Abfragekriterien entsprechen; Wenn Sie jedoch EvtSubscribeToFutureEvents angeben, gibt der Dienst nur zukünftige Ereignisse zurück, die Ihren Abfragekriterien entsprechen. Mögliche Werte finden Sie in der EVT_SUBSCRIBE_FLAGS-Aufzählung .

Rückgabewert

Ein Handle an das Abonnement, wenn es erfolgreich ist; andernfalls NULL. Wenn die Funktion NULL zurückgibt, rufen Sie die GetLastError-Funktion auf, um den Fehlercode abzurufen. Sie müssen die Funktion EvtClose mit dem Abonnementhandpunkt aufrufen, wenn sie fertig ist.

Hinweise

Um das Abonnement zu kündigen, übergeben Sie den zurückgegebenen Abonnementhandpunkt an die Funktion EvtClose .

Es gibt zwei Abonnementmodelle: das Umfragemodell und das Pushmodell. Im Pushmodell implementieren Sie einen Abonnementrückruf und legen den Rückrufparameter auf Ihre Implementierung fest. Der Dienst ruft Ihren Rückruf für jedes Ereignis auf, das Ihren Abfragekriterien entspricht (oder wenn ein Fehler auftritt).

Im Umfragemodell erstellen Sie ein Ereignisobjekt, das den Dienst signalisiert. Wenn sie signalisiert werden, rufen Sie die EvtNext-Funktion mithilfe des Abonnementhandpunkts auf, um die Ereignisse aufzählen zu können. Sie müssen die EvtClose-Funktion für jedes Ereignis aufrufen, das Sie aufzählen. Anschließend setzen Sie das Objekt zurück, und warten Sie erneut, bis der Dienst signalisiert. Dieser Prozess wiederholt, bis Sie das Abonnement kündigen.

Beispiele

Beispiel für die Verwendung dieser Funktion finden Sie unter Abonnieren von Ereignissen.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winevt.h
Bibliothek Wevtapi.lib
DLL Wevtapi.dll

Weitere Informationen

EVT_SUBSCRIBE_CALLBACK

EvtQuery