Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add functionality: Provider specific information #6

Closed
secDre4mer opened this issue May 14, 2021 · 4 comments
Closed

Add functionality: Provider specific information #6

secDre4mer opened this issue May 14, 2021 · 4 comments

Comments

@secDre4mer
Copy link
Contributor

First of all, thank you for creating the library. I've recently started working with ETW and have found it to be very useful so far.
However, one thing I was missing was information about the registered providers (e.g: there is no way yet to look up a provider based on its name). I feel that some additional provider specific information about events could also be very helpful, e.g. a text version of a specific task code.

I've created a first implementation for these points in my fork (https://github.com/secDre4mer/etw). If you think this functionality might be helpful for others, I'd like to create a pull request.

@yalegko
Copy link
Member

yalegko commented May 18, 2021

Hey, we're glad to hear that it's useful for somebody!

As for the original issue.

Yes, the ability to look for a provider by name seems quite a convenient feature. We discussed a solution like yours during lib development. Sadly, now we're unsure why we didn't implement it. Perhaps, it was due to a lack of a way to get the provider directly, without enumerating all available ones (which seems like unnecessary overhead).

As for other features like querying info about a provider, isn't it easier to use Windows tooling as logman (e.g. logman query providers 'Microsoft-Windows-DNS-Client') during the development process?

Do we miss some use cases when you need to query provider features in the runtime?

As for available contribution at all

We noticed that you've already fixed an issue, which we also faced in production recently. We'll be glad to see PR with secDre4mer@a6f6813.

We'll highly appreciate it if you respond as soon as you get a chance, as we need a fixed version for the nearest release.

@secDre4mer
Copy link
Contributor Author

Hi,

Thanks for the feedback. The reason why I implemented a provider lookup by name is that the provider name will ultimately be received at runtime from configuration files, and therefore a lookup at development time is not feasible.
I've created #7 for the MapInfo fix.

@yalegko
Copy link
Member

yalegko commented Jun 6, 2021

the provider name will ultimately be received at runtime from configuration file

Yea, and the ability to lookup provider by name is unarguably good. My question was about other provider information, like an ability to query provider Levels, Tasks, Keywords and so on. Windows native toolkit seems easier to use, that's why I asked about cases to use them in runtime in Go

So to clarify it once again:

  • LookupProvider and ListProviders look good
  • All other Provider methods seems questionable

p.s. Thx again for #7. All other bugfixes are always appreciated :)

@secDre4mer
Copy link
Contributor Author

Hi,

I think you're right about ListKeywords / ListChannels / ..., that functionality is not useful at runtime and likely superfluous. QueryTask / QueryOpcode are potentially useful in my opinion, e.g. when writing ETW events as a human readable form. I'll move them to a separate PR from LookupProvider / ListProviders, however, and if necessary we can continue the discussion there.
#8 created for LookupProvider / ListProviders.

scudette added a commit to scudette/etw that referenced this issue Dec 31, 2024
This is needed to be able to remove providers
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants