Я работаю над разработкой расширения для браузера EDGE.Расширение (приложение UWP) состоит из 3 частей:
- Само расширение.(Код JavaScript)
- Приложение UWP, предназначенное для собственных сообщений.(UWP)
- Приложение Desktop Bridge, позволяющее взаимодействовать с настольными приложениями c ++. (C #)
Кроме того, у меня есть настольное приложение, написанное на C ++.По сути, Расширению необходимо установить связь с моим настольным приложением и дать возможность моему настольному приложению получить некоторую информацию о веб-странице.Мое настольное приложение имеет возможности отслеживания, оно использует механизм ETW для отслеживания.Он имеет объект Controller , который отвечает за управление сеансом трассировки;у него есть Provider , который предоставляет возможность отслеживать некоторые конкретные события, и у него есть Consumer - объект, который может отображать все, что было отслежено.
Сессия имеет свое уникальное имя и GUID.
У провайдера есть собственный GUID.
Поставщик регистрируется в сеансе, поэтому сеанс принимает события, сгенерированные конкретным поставщиком.
Теперь возникает вопрос: есть ли возможность использовать уже имеющуюся у меня инфраструктуру Tracing (написанную на C ++), приложением C # (с EventSource) и приложением UWP (с использованием LoggingChannel, LoggingSession и т. Д.)
Я уже сделал несколько попыток, но безуспешно.
Для приложения UWP я попытался создать LoggingSession, указав NAME моего сеанса трассировки, но он не работает.Мой потребитель C ++ не получает уведомления о новых событиях.Я также попытался создать LoggingChannel и указать свой GUID сеанса трассировки:
channel = new LoggingChannel(DEFAULT_CHANNEL_NAME, null, new Guid("xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"));
, но происходит сбой, за исключением:
Дополнительная информация: доступ запрещен.(Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))