- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只想知道 ComPtr
之间的确切区别和 CComPtr
,以及是否 ComPtr::As()
是 CComPtr::QueryInterface()
的类似物?
我阅读了两者的文档,但这个问题没有明确的答案......
最佳答案
what exact difference between ComPtr and CComPtr
ComPtr
是 Windows 运行时 C++ 模板库 (WRL) 的一部分。
CComPtr
是事件模板库 (ATL) 的一部分。它们为各自的框架服务于类似的目的 - 提供自动引用计数和 refcount-safe 类型转换。但是您不应该将它们互换使用。如果您正在编写 WRL 代码,请使用
ComPtr
.如果您正在编写 ATL 代码,请使用
CComPtr
.
whether ComPtr::As() is analogue of CComPtr::QueryInterface()?
As()
只需调用
QueryInterface()
内部。
关于c++ - ComPtr 与 CComPtr,As 与 QueryInterface,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60560832/
我有一个非托管 C++ 类,其中有一个 com 映射。例如: BEGIN_COM_MAP (MyClass) COM_INTERFACE_ENTRY(...) END_COM_MAP 但是现在如果
问题: 我在代理上成功调用了 CoSetProxyBlanket(如果这是正确的术语),然后我在同一个代理上调用了 QueryInterface,但我收到了 0x80070005(“拒绝访问”)的结果
如果我有 IUnknown *ptr , 我需要调用Release()在我通过ptr->QueryInterface()获得的每个界面上, 另外调用ptr->Release()当我完成 ptr ? 我
我试图找到这个问题的答案,但完全没有运气。没有关于如何使用 Marshal.QueryInterface 返回的值的文档。 (在我的情况下是“pISomething”)。它是 IntPtr 的一个实例
考虑以下代码: TMyList = class(TList, IMyList) Delphi 向我显示错误: [DCC Error] test.pas(104): E2003 Undeclared i
我写了这段代码 'use strict'; module.exports = { up: (queryInterface, Sequelize) => { }, down: (queryI
假设我有一个实现两个或多个 COM 接口(interface)的类(与 here 完全一样): class CMyClass : public IInterface1, public IInterfa
IUnknown::QueryInterface() 被传递了一个 void** 参数,表示放置检索到的接口(interface)的地址。 STDMETHOD QueryInterface(/* [i
我想将此 USB 检测器转换为 Swift 3 https://gist.github.com/zachbadgett/471d72e83fee413d0f38 但是我卡在了这条线上: let dev
我正在尝试使用 Word 文档中的一些嵌入对象。较早的张贴者告诉我,这不是直截了当的。以下是链接答案的摘录: "As I mentioned earlier, utilizing the embedd
queryInterface.removeConstraint() 的文档没有记录可以传递给 removeConstraint() 方法的 options 对象。事实上,没有记录可以传递给各种 que
我在实用程序库中遇到问题,它执行一些 COM 互操作。它保留对在调用之间使用的 COM 对象的引用。 如果所有方法都是从使用相同 COM 线程模型的线程调用的,则该类可以正常工作。 但是,如果创建 C
是否可以为使用 ATL 的类提供 QueryInterface 的实现? BEGIN_COM_MAP(CConcrete) // Defines _InternalQueryInterface C
在我的应用程序中,我通过 CreateInstance 创建了一个对象 A,该对象又创建了一个对象 B。这两个对象应该存在于同一个进程中。 现在我看到对象 B 在请求某个接口(interface)时返
以上是否可行? 我可以这样做吗: IUnknown *punk; punk->QueryInterface(IID_MyInterface, (void**)&m_pMyInterface); 我认为
我正在尝试在现有 COM 组件中构建连接点。我从 CCmdTarget 派生类,并按照 MSDN 中的描述在类声明和实现中调用 MFC 宏。组件已正确构建、链接和运行。但是,当我调试我的客户端应用程序
这个问题在这里已经有了答案: Handling CoCreateInstance return value (2 个答案) 关闭 8 年前。 设想一种情况: CComPtr pGraph; HRES
我想知道是否有更简洁的方法来编写下面的(工作)代码: uint uEnum = 0; PStore.EnumTypes(0, 0, ref uEnum); System.Reflection.Memb
IUnknown::QueryInterface() 的典型实现方式如下:为每个支持的接口(interface) ID 使用一个 if-else-if 链并执行以下操作: if( iid == __u
我明白 QueryInterface 是什么方法实际上是这样做的——它只返回一个指向特定接口(interface)的指针。但我的问题是,我为什么要使用这种方法? 我的意思是,有什么区别 QueryIn
我是一名优秀的程序员,十分优秀!