我正在更新旧的 C++ 服务以使用 WCF 而不是 RPC,并且在发送和接收句柄(HANDLE、void*..etc)时使用什么类型存在问题。在更新的服务中,我目前使用 IntPtr,但这在从 64 位版本的服务转换为 32 位版本时不起作用。IntPtr 不能反序列化,因为在内部它只是一个 void* ,这将根据您在哪个环境中运行而有所不同。
这解决了问题,因为 RPC 基础结构实际上从不发送句柄值,而是引用句柄的 GUID。此过程在以下文章中进行了描述:
我正在寻找与此功能等效的 WCF。我可以自己在服务上编写类似的逻辑来执行此操作,甚至只是将 IntPtr 更改为 Int64,但我希望有类似于 RPC 方式的东西。