Windows Server 2008:COM错误:0x800706F7-存根接收到错误数据

Windows Server 2008:COM错误:0x800706F7-存根接收到错误数据,com,windows-server-2008,Com,Windows Server 2008,我正在评估Server2008。我的C++可执行文件正在获得这个错误。我在MSDN上看到过这个错误,它似乎需要对以前的几个操作系统进行热修复。还有人看到这个吗?对于32位和64位操作系统,我得到了相同的结果 代码段: HRESULT GroupStart([in] short iClientId, [in] VARIANT GroupDataArray, [out] short* pGroupInstance, [out] long* pCommandId); 其中,GroupData

我正在评估Server2008。我的C++可执行文件正在获得这个错误。我在MSDN上看到过这个错误,它似乎需要对以前的几个操作系统进行热修复。还有人看到这个吗?对于32位和64位操作系统,我得到了相同的结果

代码段:

HRESULT GroupStart([in] short iClientId, [in] VARIANT GroupDataArray,
    [out] short* pGroupInstance, [out] long* pCommandId);
其中,GroupDataArray VARIANT参数包装了一个一维变量安全数组,该数组包装了DCAPICOM_GroupData结构项:

// DCAPICOM_GroupData
[
      uuid(F1FE2605-2744-4A2A-AB85-1E1845C280EB),
      helpstring("removed")
]

typedef struct DCAPICOM_GroupData {
      [helpstring("removed")]
      long              m_lImageID;

      [helpstring("removed")]
      unsigned char     m_ucHeadID;

      [helpstring("removed")]
      unsigned char     m_ucPlateID;
} DCAPICOM_GroupData;

我们最近在通过DCOM进行通信的客户端/服务器应用程序中遇到了相同的错误。事实证明,穿过导线(即,非本地)的编组接口指针的大小已经改变(变得更大)。您可能希望检查您的代码是否正在通过CoMarshalInterface或类似工具进行任何特殊编组。

在打开Microsoft的支持案例后,我现在可以回答自己的问题了。这是(现在)一个公认的错误。问题与服务器端的封送有关,但在调用服务器代码之前。我们的结构是6字节长,但是这个COM实现将其解释为8,因此编组失败,这就是返回的错误。在发布服务包来处理此问题之前,解决方法是向结构中添加两个额外字节,将其填充到8个字节。我们还没有遇到更多失败的实例,但我们仍然有很多测试要做。

这确实不是一个通用的计算问题站点。这是针对编程问题的。我相信这个问题是有效的,因为这是OP的程序遇到了错误。但更多的细节会有所帮助:是什么操作产生了错误?它是零星的还是可重复的?我们只运行本地,不使用编组,所以这似乎不适用于我们。