如何从WinRT中的接口ID(IID)中找出类名?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从WinRT中的接口ID(IID)中找出类名?相关的知识,希望对你有一定的参考价值。

我有一个基于BlankApp模板的XAML C ++ / WinRT应用程序。当我构建应用程序时,我意识到我的应用程序在输出窗口的幕后抛出了很多例外。我试图理解的例外情况如下:

Exception thrown at 0x00007FFA9EFA9149 (KernelBase.dll) in wzrd_editor.exe: WinRT originate error - 0x80040155 : 'Failed to find proxy registration for IID: {50F19C16-0A22-4D8E-A089-1EA9951657D2}.'.

我一直在做的是打破WinRT发起错误并查看调用堆栈。但是我想知道如何找出错误中显示的IID的类名?看来知道这些异常的来源似乎非常有用。也许在我可以找到的注册表中的某个地方?

答案

这个问题混淆了两个概念,即运行时类和接口。运行时类是通过一组接口实现的命名类型,其中一些接口可能是该类唯一的,而其他类可以在许多类上实现。

对于系统类型,SDK中的C ++标头将包含所有接口(公共和私有)的定义,您可以在其中搜索GUID以映射回类。虽然有时接口可能会在注册表中出现名称,但这并不能保证。

我做了一个快速搜索,我可以看到错误中提到的接口是Windows.UI.Xaml.IPropertyChangedEventHandler,它是委托PropertyChangedEventHandler的底层接口。由于这是XAML的一部分,因此期望这些接口应该由敏捷对象实现,并且应始终在UI线程上调用。

该错误表示您的非敏捷代理要么在一个公寓中注册又在另一个公寓中调用。您可以通过使您的委托敏捷或通过在UI线程上创建和注册它来解决此问题。

谢谢,

Ben

以上是关于如何从WinRT中的接口ID(IID)中找出类名?的主要内容,如果未能解决你的问题,请参考以下文章

如何从托管项目中引用本机 WinRT 组件?

从代码绑定到 WinRT/UWP 中的自定义附加属性

尝试从 WinJS 读取 C# WinRT 组件中的空字符串时出现异常

Java代码虾皮item_search-根据关键词获取商品列表 API 接口(title商品标题pic_url宝贝图片detail_url宝贝链接shop_id店铺IDnum_iid宝贝ID等

如何从 python winrt toast 获取按钮和文本输入?

对 IID_ICorProfilerInfo 的引用失败