From 6374f91fefe8a38c2d99925951e9d6129b29cacb Mon Sep 17 00:00:00 2001 From: 1orenz0 <1orenz0> Date: Sun, 6 Oct 2019 13:24:47 +0100 Subject: [PATCH] [event log] Expose channel metadatas --- windows/winobject/event_log.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/windows/winobject/event_log.py b/windows/winobject/event_log.py index 24a40b7..6c35f65 100644 --- a/windows/winobject/event_log.py +++ b/windows/winobject/event_log.py @@ -459,6 +459,31 @@ class ChannelConfig(EvtHandle): def __repr__(self): return '<{0} "{1}">'.format(type(self).__name__, self.name) +class ChannelMetadata(object): + + def __init__(self, pub_metada, channel_id): + super(ChannelMetadata, self).__init__() + self.pub_metada = pub_metada + self._id = channel_id + + def _query_channel_metadata_property(self, propertyid): + return self.pub_metada.chanrefs.property(propertyid, self._id) + + @property + def flags(self): + return int(self._query_channel_metadata_property(gdef.EvtPublisherMetadataChannelReferenceFlags)) + + @property + def name(self): + return str(self._query_channel_metadata_property(gdef.EvtPublisherMetadataChannelReferencePath)) + + @property + def id(self): + return int(self._query_channel_metadata_property(gdef.EvtPublisherMetadataChannelReferenceID)) + + @property + def index(self): + return int(self._query_channel_metadata_property(gdef.EvtPublisherMetadataChannelReferenceIndex)) class EvtPublisher(object): """An Event provider""" @@ -496,6 +521,15 @@ class PublisherMetadata(EvtHandle): """ return PropertyArray(publishinfo(self, gdef.EvtPublisherMetadataChannelReferences).value) + @property + def channels_metadata(self): + """The :class:`ChannelMetadata` for each event this provider defines + + :yield: :class:`ChannelMetadata` + """ + return [ChannelMetadata(self, i) for i in range(self.chanrefs.size)] + + @property def events_metadata(self): """The :class:`EventMetadata` for each event this provider defines