Windows Server 2008: ошибка COM: 0x800706F7 - заглушка получила неверные данные - PullRequest
4 голосов
/ 15 сентября 2008

Я оцениваю Server 2008. Мой исполняемый файл C ++ получает эту ошибку. Я видел эту ошибку на MSDN, которая, по-видимому, требовала оперативного исправления для нескольких предыдущих ОС. Кто-нибудь еще видел это? Я получаю те же результаты для 32- и 64-разрядных ОС.

Фрагмент кода:

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

Где аргумент GroupDataArray VARIANT оборачивает одномерный SAFEARRAY из 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;

Ответы [ 2 ]

3 голосов
/ 26 сентября 2008

После открытия службы поддержки в Microsoft я могу ответить на свой вопрос. Это (сейчас) признанная ошибка . Проблема связана с сортировкой на стороне сервера, но до вызова кода сервера. Наша структура имеет длину 6 байт, но эта реализация COM интерпретирует ее как 8, поэтому сортировка не выполняется, и это ошибка, которую вы получаете обратно. Обходной путь до тех пор, пока не будет выпущен Service Pack, - добавить два дополнительных байта в структуру, чтобы заполнить ее до 8 байтов. Мы еще не сталкивались с другими случаями, когда произошел сбой, но нам еще предстоит пройти много испытаний.

2 голосов
/ 15 сентября 2008

Недавно мы столкнулись с той же ошибкой, когда приложение клиент / сервер связывалось через DCOM. Оказалось, что размер маршализованного указателя интерфейса, проходящего через провод (т.е. не локальный), изменился (стал больше). Возможно, вы захотите проверить, выполняет ли ваш код специальную сортировку через CoMarshalInterface или тому подобное.

...