我正致力于为EDGE浏览器开发扩展程序。扩展(UWP App)由3部分组成:
另外,我有一个用C ++编写的桌面应用程序。基本上,扩展需要与我的桌面应用程序建立通信,并使我的桌面应用程序能够获取有关该网页的一些信息。 我的桌面应用程序具有跟踪功能,它使用ETW机制进行跟踪。 它有一个 Controller 对象,负责管理跟踪会话;它具有提供程序,提供跟踪某些特定事件的能力,并且具有消费者 - 一个能够显示所跟踪的所有内容的对象。
会话拥有自己独特的名称和GUID。
提供商拥有自己的GUID。
提供者在会话中注册自己,以便Session接受特定Provider生成的事件。
现在的问题是: 是否能够使用我已有的跟踪基础结构(使用C ++编写),C#应用程序(使用EventSource)和UWP应用程序(使用LoggingChannel,LoggingSession等)。
我已经做了一些尝试,但没有成功。
对于UWP应用程序,我尝试通过指定跟踪会话的NAME来创建LoggingSession,但它不起作用。我的c ++消费者没有收到有关新事件发生的通知。 我还尝试了创建LoggingChannel并指定我的跟踪会话GUID:
channel = new LoggingChannel(DEFAULT_CHANNEL_NAME, null, new Guid("xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"));
但它崩溃了例外:
其他信息:访问被拒绝。 (HRESULT异常:0x80070005(E_ACCESSDENIED))
答案 0 :(得分:0)
请阅读此处的文档:(https://docs.microsoft.com/en-us/microsoft-edge/extensions/guides/native-messaging#adding-a-desktop-bridge-component),以创建使用NativeMessaging + Desktop Bridge的Edge Extensions。必须将Extension和运行时组件(UWP)打包在同一个包中以启用NativeMessaging功能。
您可以尝试https://github.com/MicrosoftEdge/MicrosoftEdge-Extensions-Demos/tree/master/SecureInput处的GitHub示例来了解此架构。