c++ - 通过 IDispatch 公开 COM 函数的服务器如何在不传递任何 ID 参数的情况下区分调用函数的不同客户端?

标签 c++ windows com idispatch

我有一个 Windows 服务,它公开了一些要通过 IDispatch Invoke 调用的 COM 函数。有不同的客户端(Windows 应用程序)可以随时调用这些功能中的任何一个。我需要在 Windows 服务中引入一个不需要对客户端进行任何更改的更改(我无法修改它们)。我需要区分(如 ID)哪个应用程序正在调用函数。注意:我不需要知道确切的客户端应用程序,只需区分当前 session 中的不同客户端就足够了。

例如:假设有两个客户端 C1 和 C2。当 C1 在 Windows 服务 (WS) 中调用函数 F1 时,WS 知道每次(在当前 session 期间)一个客户端 X1(注意我说的是 X1,因为 WS 不需要确切地知道 C1 调用了 F1,只是分配C1 的 ID,如 PID~进程 ID~)。所以,现在 C3 调用 F2,WS 知道客户端 X2(不同于 X1)调用了 F2。然后,C1 调用 FX(WS 公开的任何 COM 函数)WS 可以区分 X1 调用的 FX,而不是客户端 Xn(如 X2)调用的 FX。

有什么可以帮助我在不需要客户提供 ID 参数的情况下实现这种情况吗?

最佳答案

除了可能之外,没有关于调用者的信息

...authentication information the client uses to make calls on the specified proxy

如果您对区分调用者感兴趣,典型的解决方案是添加一个方法参数,或者为每个调用者创建一个单独的对象,以便他们在其特定实例上调用方法。

关于c++ - 通过 IDispatch 公开 COM 函数的服务器如何在不传递任何 ID 参数的情况下区分调用函数的不同客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30747826/

相关文章:

c# - 如何创建一个组件,使 VBA 能够访问我自己正在运行的应用程序?

c++ - C/C++ 重复符号错误

com - 为什么 COM 不使用静态的空 BSTR?

c++ - 统一调节程序执行率[Windows C++]

windows - Powershell脚本无法读取AD电话号码

.net - 您可以依赖哪些 Windows 环境变量?

c - 如何使 Gtk 程序可移植

asp.net - 为什么我必须运行 x86 控制台应用程序才能看到 COM DLL,而 ASP.NET 可以运行 AnyCPU?

java - Android : How can i interface between . java文件和GSOAP

javascript - 平滑旋转到一个 Angular