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

时间:2008-09-15 17:50:41

标签: com windows-server-2008

我正在评估Server 2008.我的C ++可执行文件正在收到此错误。我在MSDN上看到了这个错误,似乎需要对以前的几个操作系统进行热修复。有人见过这个吗?我得到的结果与32& 64位操作系统。

代码段:

HRESULT GroupStart([in] short iClientId, [in] VARIANT GroupDataArray,
    [out] short* pGroupInstance, [out] long* pCommandId);

GroupDataArray VARIANT参数包装包含DCAPICOM_GroupData结构条目的VARIANT的单维SAFEARRAY:

// 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;

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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