问题标签 [iunknown]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
288 浏览

java - Java未知数量的参数方法

如何使用字符串和未知数量的参数创建方法?

谢谢。

0 投票
1 回答
38 浏览

visual-c++ - C++ 代码中包含异常模板化函数的结构

在以下 C++ 代码(来自 Microsoft COM 头文件)中,以 开头的部分是什么template<class Q>...

由于其他原因,我也完全感到困惑,因为虽然 astruct正在使用中,但它具有类元素;例如,public关键字。

0 投票
0 回答
260 浏览

com - 将接口从 IUnknown 更改为 IDispatch

我有一个只能通过 vtable 访问的 COM 类。它已经分发给客户。我还计划通过引入 IDispatch 来允许脚本访问。

在我的本地测试中,它显示客户端代码不会更改,但它们将需要代码重建,为什么会这样?

0 投票
0 回答
117 浏览

c# - COM 对象 IUnknown 参数。InvalidCastException IRowset

我在 c#(COM 技术)上编写了一个 Ole Db 提供程序。

Ole Db 提供程序是 .NET DLL。

InvalidCastException 存在问题:附加信息:无法将“MyOleDbProvider.RowsetObject”强制转换为“IRowset”类型。

从Ole Db Client执行“GetRowset”方法时会出现此问题。在 msdn 中:

我转换了“GetRowset”,例如

执行:

当我通过ppRowset InvalidCastException 发生。

仅当客户端是 .NET 客户端时才会出现此问题。.NET 客户端使用 System.Data.OleDb 命名空间。如果客户端是本机客户端,则没有问题。

0 投票
1 回答
2424 浏览

encryption - 逆向工程寻求文件解压的帮助

这是我在 StackOverflow 看了这么多年后第一次写帖子寻求帮助。我从 0 开始到我现在的水平,一切都很棒。没有 StackOverflow,我无法得到它。这次我真的需要文件解压的帮助......它的开头

AF 1B B1 FA 10 00 00 00

在查看后发现我发现了这种文件类型

  1. GLS_BINARY_LSB_FIRST
  2. 应用程序/八位字节流

更多信息...我可以在其中查看一些小文件 *.dll

  • 程序集-CSharp-firstpass.dll
  • Assembly-UnityScript-firstpass.dll
  • zlib.net.dll(这些文件我可以在 010 编辑器中以十六进制格式查看,我认为没有加密)....还有更多...

是的,我正在寻求帮助,它是什么压缩类型如何解压缩和重新压缩它......

您可以在以下位置获取演示文件:https ://mega.nz/#!K8Rm3CxD!O6dDHyLwbr6OdG18b9-1R6foBibbbQnRkMimyDdhJb0

谢谢社区!爱你们。很棒的 StackOverflow。

==================================================== ==========

p/s:更多细节:这个文件名是 global-metadata.dat 它存储在

AppName\Payload\qjmu.app\Data\Managed\Metadata

这个适用于 iOS 的应用程序,我将 iOS 应用程序的文件扩展名更改为 .zip 并提取这些文件。在这个 iOS 应用程序的另一个版本中,我没有找到这些子文件的文件包或压缩:

Assembly-CSharp.dll Assembly-CSharp-firstpass.dll Assembly-UnityScript.dll Assembly-UnityScript-firstpass.dll Boo.Lang.dll ICSharpCode.SharpZipLib.dll Ionic.Zlib.CF.dll Mono.Security.dll mscorlib.dll NSpeex .dll System.Core.dll System.dll System.Xml.dll System.Xml.Linq.dll UMGameAnalyticsLibForiOS.dll UnityEngine.dll UnityScript.Lang.dll zlib.net.dll

0 投票
1 回答
147 浏览

c# - 在 C# 中,如何在实现 IStorage 的返回对象上调用 Release?

我正在从 C# 读取和写入结构化存储文件。打开我调用的文件

这有效,我可以访问该文件。我相信我需要在 Storage 对象上调用 Release() 来关闭文件。但是,自从在 IUnknown 上实施以来,我不知道如何到达 Release。

我可以将 StorageInterface 转换为实现 IUnknown 的对象并以这种方式调用它吗?

谢谢,

约翰

0 投票
1 回答
559 浏览

python - python xlrd 未知编码:unknown_codepage_10008

我正在尝试使用 xlrd 打开一个 Excel 文件 (.xls)。这是我正在使用的代码的摘要:

这适用于大多数文件,但不适用于我从特定组织获得的文件。当我尝试从该组织打开 Excel 文件时出现的错误如下。

在此处输入链接描述

链接是一个错误文件 xls

0 投票
1 回答
48 浏览

c++11 - C++11 奇怪的符号 [0:size())

我是否可以理解

Stroutrup C++ 编程语言 - 不变量

上面的符号是一个范围初始化器,还是这个解释性指令在数学上传达 Vector 类数组范围在 0 和某个预定大小之间?

我什至应该使用这本书,因为它包含错误,例如使用.而不是从该结构的变量访问结构成员->

0 投票
1 回答
781 浏览

c++ - 何时在类中实现 IUnknown

我正在编写一个 C++ 类,它至少使用 Windows API 的一个 COM 接口。显然,在类中使用这些对象时,我需要正确调用AddRef()and Release()

我的问题是......我是否需要IUnknown在 C++ 类本身中额外实现?我的理解是,如果我使用的接口正在执行异步操作或回调,我只需要这样做。在这种情况下,您需要确保在异步操作或回调完成时 C++ 类本身仍然“活动”。它是否正确?

为了澄清(以及根据 Hans 的评论),我感兴趣的特定界面是IMFSourceReader(Windows Media Foundation)。该接口默认为同步模式。IUnknown再说一次,如果我理解正确,如果我选择在异步模式下使用它,我只需要在我的 C++ 类中实现。否则调用IMFSourceReader->AddRef()orIMFSourceReader->Release就足够了。

但是,如果我选择IMFSourceReader在异步模式下使用,则需要IMFSourceReaderCallback接口,它本身继承了IUnknown. 在那种情况下,我必须在课堂上实现它。

我的理解正确吗?我仍处于编写实现的早期阶段,所以我没有真正的示例代码可以分享。在这一点上,我只是想确定我班级的基本结构。

0 投票
0 回答
160 浏览

com - IUnknown(IXRApplication) 上的 AddRef 崩溃

我正在调试一个更大的问题,但我已经缩小到一个特定的场景。
首先:

这工作正常,然后:

这会执行甚至返回,S_OK但是返回的地址与返回的地址pUnk不同pApp(正好少 4 个字节),出乎意料但技术上不是问题

在那之后:

这将执行并返回 0 但从此时开始,如果我尝试调用pUnk->ReleasepUnk->QueryInterface它崩溃。如果我在它运行pUnk->Release之前调用但在任何调用崩溃后再次调用。看起来好像实际上是在破坏对象。崩溃似乎是一个空引用异常。 pUnk-AddRefpUnk->AddRefAddRef

编辑:

因此,在学习了如何在 WEC7 模拟器上进行调试后,我发现了问题所在。AddRef()上的组件IUnknown看起来像这样

就是这样,所以每次调用都会AddRef()破坏堆栈。这很有趣,因为有时它会起作用,而其他时候则不会,但事实证明它与堆栈有关,即堆栈分配的变量。

我现在不知道如何工作。由于可移植性问题,我试图避免使用本机包装器,但我认为仅使用托管代码无法解决此问题。

另一方面,微软到底在想什么。这不违反COM自己的规则吗?我很难理解他们如何发布破坏堆栈的代码。