Повторно использовать механизм ETW в смешанных технологиях - PullRequest
0 голосов
/ 29 мая 2018

Я работаю над разработкой расширения для браузера EDGE.Расширение (приложение UWP) состоит из 3 частей:

  1. Само расширение.(Код JavaScript)
  2. Приложение UWP, предназначенное для собственных сообщений.(UWP)
  3. Приложение 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))

1 Ответ

0 голосов
/ 08 июня 2018

Пожалуйста, прочтите документацию здесь: (https://docs.microsoft.com/en-us/microsoft-edge/extensions/guides/native-messaging#adding-a-desktop-bridge-component) для создания Edge Extensions, использующих NativeMessaging + Desktop Bridge. Расширение и компонент времени выполнения (UWP) должны быть упакованы в одном пакете, чтобы включить функциональность NativeMessaging.

Вы можете попробовать пример GitHub на https://github.com/MicrosoftEdge/MicrosoftEdge-Extensions-Demos/tree/master/SecureInput, чтобы получить представление об этой архитектуре.

...