草庐IT

com-state

全部标签

windows - 为什么我不需要在 COM 线程内创建的线程中调用 CoInitialize?

为了学习多线程,我在COM线程(TRemoteDataModule)中创建了一个线程。这是我的组件工厂:TComponentFactory.Create(ComServer,TServerConn2,Class_ServerConn2,ciMultiInstance,tmApartment);在线程内,我不需要调用CoInitialize来使用TADOQuery.Create、.Open....Exec我读到IneedtoinitializetheCOMlibraryonathreadbeforeyoucallanyofthelibraryfunctionsexceptCoGetMal

.net - 非 COM、非 .NET DLL 的正确名称?

在Windows世界中,什么是正确的名称。具有导出函数的老式C++DLL?不是COMDLL,也不是.NETDLL。我们以前通过调用LoadLibrary()和GetProcAddress()来调用的DLL类型?我一直称它们为“平面DLL”,因为调用者无法从DLL中实例化对象,但正确的名称是什么?编辑感谢您的回答。“DLL”在技术上可能是正确的,但在我工作的地方,每个人都认为“DLL”是指COM,或者可能是.NET,所以我需要一个能够准确区分我的意思的术语。 最佳答案 一个.dll?所有这些其他的东西都使用.dll提供的基本功能来完成

windows - COM 服务器 DLL 依赖项的搜索规则

考虑Windows上的以下文件组织:[appfolder]app.exe[folder'sub']com_server.dllregular.dllhelper.dll还假设以下情况:com_server.dll和regular.dll都静态链接到helper.dll中的函数,因此helper.dll在加载时加载。app.exe没有静态依赖。com_server.dllCOM对象已在Windows中注册文件夹“sub”不在系统路径中。考虑以下情况:app.exe调用LoadLibrary("sub/regular.dll")。这将失败,因为Windows将无法找到helper.dll,

windows - 无法将带有 Skype4COM 的 Windows 服务附加到 Skype 客户端

我试图创建一个允许与Skype客户端交互的Windows服务。我正在使用SKYPE4COM.DLL库。当我创建一个简单的控制台或win32应用程序时,一切正常(我有这个应用程序的Skype请求,它运行良好)。但是当我尝试将这个应用程序作为服务运行时,我有一个错误Servicecannotbestarted.System.Runtime.InteropServices.COMException(0x80040201):Waittimeout.atSKYPE4COMLib.SkypeClass.Attach(Int32Protocol,BooleanWait)atCommander.Com

windows - 从 Windows 驱动程序控制 COM 端口名称

我正在为多端口串行卡编写适用于Windows(7/8)的驱动程序堆栈。该卡有两个端口,因此驱动程序堆栈包含一个总线驱动程序,该总线驱动程序创建两个PDO,每个端口一个,然后使总线关系无效以启动PNP序列,从而导致加载端口驱动程序。端口驱动程序在创建符号链接(symboliclink)以允许应用程序访问时在注册表中查找PortName字符串。我猜MSCoInstaller正在分配名称。这些端口被赋予了通常的COMn编号,通常是COM3和COM4。除了我找不到控制哪个端口被赋予哪个名称的方法之外,一切似乎都运行良好-端口具有不同的实例ID(0x40和0x41)和不同的UINumber(0和

windows - SysAllocString/SysFreeString COM 函数需要调用 CoInitialize?

COM是否需要初始化才能使用SysAllocString、SysFreeString等BSTR处理函数?MSDN说YouneedtoinitializetheCOMlibraryonathreadbeforeyoucallanyofthelibraryfunctionsexceptCoGetMalloc在我看来,BSTR分配函数使用IMalloc,因此不需要COMinit? 最佳答案 我找不到官方文档说你可以在不初始化COM的情况下调用这些函数,但我可以带你去记忆一下一些有趣的观察。因为Windows95在具有4MBRAM的机器上运

windows - 如何使 COM 对象的方法不在主线程中运行

我有一个实现COM本地服务器的Windows服务。当作为应用程序运行时,COM对象方法在一个单独的(而不是在主线程中)调用,这很好。作为服务运行时情况会发生变化-然后在服务线程的上下文中调用COM对象方法,这对我来说并不酷。我看到它与公寓、MTA、STA等有关。但我不知道如何强制COM在单独的线程中而不是在服务线程中调用我的对象方法。这可能与在服务启动时注册com对象有关?我的环境是windows7+delphi,但欢迎使用c++解决方案。2011-04-26更新:@sharptooth和@ChrisDickson的荣誉让我在“消息循环”的方向上搜索解决方案。由于它是STA,因此该应用

windows - COM `IStream` 接口(interface)指针和来自不同线程的访问

任何IStream实现是否有官方COM要求,就IStream的并发访问而言,它应该是线程安全的跨线程通过相同接口(interface)指针的方法?我不是在谈论数据完整性(通常,读/写/查找应该与锁同步)。问题是关于需要使用COM编码器将IStream对象传递给来自不同COM单元的线程。这是一个比我问的关于IStreamasreturnedbyCreateStreamOnHGlobal更普遍的问题,请参阅那里了解更多技术细节。我只是想更好地理解这些东西。已编辑,我在MSDN上找到了此信息:Threadsafety.ThestreamcreatedbySHCreateMemStreamis

c# - 无法注册 COM 对象以在计划任务中使用

我正在尝试创建一组我可以安排在未来某个时间运行的C#类。目的是通过我的代码的其他部分以编程方式安排这些。这是我试图通过COM调用的当前类。usingSystem;usingSystem.Linq;usingSystem.Runtime.InteropServices;usingMicrosoft.Win32.TaskScheduler;namespaceSchedulableTasks{[Guid("F5CAE94C-BCC7-4304-BEFB-FE1E5D56309A")]publicclassTaskRegistry:ITaskHandler{privateITaskHandle

android - java.lang.ClassNotFoundException : com. intellij.junit5.JUnit5IdeaTestRunner 在 kotlin 中使用 spek

我是在kotlin测试中使用spek的新手。使用spek时,在logcat上出现以下错误。我不明白我为什么得到这个java.lang.ClassNotFoundException:com.intellij.junit5.JUnit5IdeaTestRunneratjava.net.URLClassLoader.findClass(URLClassLoader.java:381)atjava.lang.ClassLoader.loadClass(ClassLoader.java:424)atsun.misc.Launcher$AppClassLoader.loadClass(Launch