requerimientos - Windows Server 2008: error COM: 0x800706F7-El talón recibió datos incorrectos
windows server 2012 (2)
Estoy evaluando Server 2008. Mi ejecutable C ++ está recibiendo este error. He visto este error en MSDN que parece haber requerido un hot-fix para varios sistemas operativos anteriores. ¿Alguien más ha visto esto? Obtengo los mismos resultados para el sistema operativo de 32 y 64 bits.
Fragmento de código:
HRESULT GroupStart([in] short iClientId, [in] VARIANT GroupDataArray,
[out] short* pGroupInstance, [out] long* pCommandId);
Donde el argumento GroupDataArray VARIANT ajusta un SAFEARRAY de una sola dimensión de VARIANT que envuelve una entrada de estructura 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;
Nos encontramos con el mismo error recientemente con una aplicación cliente / servidor que se comunica a través de DCOM. Resultó que el tamaño de un puntero de la interfaz ordenada que cruzaba el cable (es decir, no local) había cambiado (se había hecho más grande). Es posible que desee comprobar si su código está realizando una clasificación especial a través de CoMarshalInterface o similar.
Después de abrir un caso de soporte con Microsoft, ahora puedo responder mi propia pregunta. Este es (ahora) un error reconocido. El problema tiene que ver con organizar el servidor, pero antes de llamar al código del servidor. Nuestra estructura tiene una longitud de 6 bytes, pero esta implementación COM lo interpreta como 8, por lo que falla la clasificación y este es el error que recibe. La solución temporal, hasta que se libere un Service Pack para tratar con esto, es agregar dos bytes adicionales a la estructura para agregar un máximo de 8 bytes. No hemos encontrado más instancias que aún fallen, pero aún tenemos muchas pruebas por hacer.