草庐IT

com-state

全部标签

windows - COM 服务器是否必须为 [out] 参数调用 SysFreeString()?

我们有如下界面:[object,uuid("uuidhere"),dual]interfaceIInterface:IDispatch{[id(1),propget]HRESULTCoolProperty([out,retval]BSTR*result);}现在有一个小问题。一方面,参数是“out”,因此任何值都可以作为输入传递,参数只有在成功返回后才会生效。另一方面,有thisMSDNarticle它从许多页面链接到,这些页面基本上说(最后一段)如果任何函数被传递BSTR*它必须在分配新字符串之前释放字符串。太可怕了。如果那篇文章是正确的,则意味着所有调用者都必须确保传递有效的BST

windows - 如何使用批处理文件从 COM 端口读取数据?

是否有可用于从COM端口读取的DOS/批处理命令?我试图寻找那个但没有找到解决方案。 最佳答案 要从COM端口读取一些信息,您可以尝试下一个命令:typeCOM{n}要将信息发送到COM端口,请使用下一个命令:echosometext>COM{n} 关于windows-如何使用批处理文件从COM端口读取数据?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3923894/

c++ - MSMQ - C++ 还是 COM?

我需要开始编写一些MSMQ代码,这些代码将与其他机器上的WCF代码交互。有MSMQ经验的人是否会就使用直接C++与使用COM的MSMQ的优缺点提出建议? 最佳答案 其实你不必决定。您可以组合。这是一个完整的发送/接收实现的代码示例。如果您改进了它,请告诉我...h文件:#pragmaonce#include//==========================================================================//MSMQWrapper-wrappestheCOMobjectusedto

c++ - 为什么这个 COM IUnknown::Release 的实现有效?

从例子中我看到COMIUnknown::Release()函数实现是这样的:ULONGRelease(){InterlockedDecrement(&m_count);if(m_count==0){deletethis;}returnm_count;}因此,如果m_count为0,那么我们将删除“this”对象,并返回引用计数。我不明白的是为什么它有效?!?!删除对象不会破坏调用堆栈,或者因为它被线程占用,所以它与对象无关吗???如果对象被删除了,怎么可能返回m_count,应该是被删除了。我本可以说服自己,如果删除后代码返回硬编码0没关系,但它怎么会返回成员?!?!非常感谢您的帮助!

windows - 如何为仅用于远程 COM 对象的 TLB 创建 list 文件?

我的Delphi应用程序Client.exe需要几个.tlb文件才能工作。这些文件定义服务器接口(interface)。相应的对象实例是使用System.Win.ComObj.CreateRemoteComObject创建的。问题是什么?目前.tlb文件在安装过程中使用regtlibv12.exe进行全局注册,并在卸载软件时取消注册。这使得无法安装和卸载同一软件的多个实例,因为它会破坏TLB注册。尝试用RegistrationFreeCOM解决它想法是使用.tlb文件而不用注册,但使用.manifest文件。我知道如何使用customizedWindowsapplicationmani

windows - Spectre/Meltdown 补丁导致 COM 方法返回 E_ACCESSDENIED

我从事一个大量使用COM的项目,而新的Spectre/Meltdown补丁无疑会干扰程序内的通信。我怎么知道?我重新镜像了不存在此补丁的Windows机器(2017年5月)。我安装了我的程序,一切都按预期工作。然后我下载了所有必需的更新。该程序不再起作用。然后我只卸载了Meltdown/Spectre补丁(2018年1月1日针对基于x64的系统的Windows10版本1507的累积更新(KB4056893)),程序恢复正常行为。我将调试器连接到我的程序并追踪到这部分代码。INvRtrControl4Itf*poRouterControl=GetNvRtrControl4();if(po

windows - 为什么 COM CoInitializeSecurity 在我的 DLL 中失败?

我目前正在研究来自MSWindowsSDK6.1的VSHADOW.EXE3.0。我制作了一个可以编译成DLL的版本,该DLL仅导出一个新编写的函数,该函数需要命令行作为字符串,将其标记化,然后调用旧的wmain。DLL不是COM服务器。它在编译为EXE时与旧版本完全一样,但在编译为DLL时却不能正常工作,因为此调用失败:CoInitializeSecurity(NULL,-1,NULL,NULL,RPC_C_AUTHN_LEVEL_PKT_PRIVACY,RPC_C_IMP_LEVEL_IDENTIFY,NULL,EOAC_NONE,NULL);因HRESULT错误0x80010119

windows - 无法连接到真正的 www.google.com

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。这个问题似乎不是关于aspecificprogrammingproblem,asoftwarealgorithm,orsoftwaretoolsprimarilyusedbyprogrammers的.如果您认为这个问题是关于anotherStackExchangesite的主题,您可以发表评论,说明问题可能在哪里得到解答。关闭7年前。Improvethisquestion当我使用Chrome作为我的浏览器时,我收到了这条消息,说我无法连接到真正的谷歌网站。我试图通过以下方式解决问题检查我的时区。(因为

c++ - 如何检索 COM 类的接口(interface) ID 以便将其传递给 CoCreateInstance?

我想以编程方式检索任何类的接口(interface)ID,以便我可以将它传递给CoCreateInstance。非常感谢任何帮助!!请参阅下面的“我如何获得此信息”:HRESULThResult;CLSIDClassID;void*pInterface;if(!(hResult=SUCCEEDED(CoInitialize(NULL)))){return1;}if(S_OK==CLSIDFromProgID(OLESTR("Scripting.FileSystemObject"),&ClassID)){hResult=CoCreateInstance(ClassID,NULL,CLSC

windows - D 对 COM 的支持

维基百科是这样说的:“在MicrosoftWindows上,D可以访问COM(组件对象模型)代码。”D中对COM有什么样的支持?它比在C++中使用COM更容易吗?我找到了thislink在D页面上,但它并没有告诉我太多信息。 最佳答案 Juno有一个新版本.5.1,它有很多连接到Word、Excel、FrameMaker、Trados等的好方法。因此,这是可能的,也很容易。像这样:scopeword=newDispatchObject("Word.Application");scopewDocs=word.get("Document