2008-09-15 1 views
4

Ich evaluiere Server 2008. Meine C++ - Programmdatei erhält diesen Fehler. Ich habe diesen Fehler auf MSDN gesehen, der anscheinend einen Hotfix für mehrere frühere Betriebssysteme erforderlich gemacht hat. Hat noch jemand das gesehen? Ich bekomme die gleichen Ergebnisse für das 64-Bit-Betriebssystem 32 &.Windows Server 2008: COM-Fehler: 0x800706F7 - der Stub empfing schlechte Daten

Code-Snippet:

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

Wo die GroupDataArray VARIANT Argument ein eindimensionales SAFEARRAY von VARIANT Packungen ein DCAPICOM_GroupData struct Einträge Verpackung:

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

Dies ist wirklich keine allgemeine Computing-Frage-Website. Dies ist für Programmierfragen. – GEOCHET

+0

Ich glaube, die Frage ist gültig, da es das Programm des OP ist, das in den Fehler läuft. Aber mehr Details wären hilfreich: Welche Operation erzeugt den Fehler? Ist es sporadisch oder wiederholbar? –

Antwort

2

Wir liefen in den gleichen Fehler vor kurzem mit einem Client/Server-App kommuniziert über DCOM. Es stellte sich heraus, dass die Größe eines marshallierten Schnittstellenzeigers, der über den Draht ging (d. H. Nicht lokal), sich geändert hatte (größer geworden). Vielleicht möchten Sie überprüfen, ob Ihr Code ein spezielles Marshalling über CoMarshalInterface oder ähnliches durchführt.

+0

Wir laufen nur lokal und verwenden kein Marshalling, das scheint für uns nicht zu gelten. – creohornet

3

Nach dem Öffnen einer Support-Fall mit Microsoft kann ich jetzt meine eigene Frage beantworten. Dies ist (jetzt) ​​ein anerkannter Fehler. Das Problem hat mit dem Marshalling auf der Serverseite zu tun, aber bevor der Servercode aufgerufen wird. Unsere Struktur ist 6 Byte lang, aber diese COM-Implementierung interpretiert sie als 8, so dass das Marshalling fehlschlägt, und dies ist der Fehler, den Sie zurückbekommen. Die Problemumgehung, bis ein Service Pack freigegeben wird, um damit umzugehen, besteht darin, der Struktur zwei zusätzliche Bytes hinzuzufügen, um sie auf bis zu 8 Bytes aufzufüllen. Wir sind noch nicht auf Fälle gestoßen, die noch nicht bestanden haben, aber wir müssen immer noch viele Tests durchführen.

+2

Hallo, was ist die Bug-ID? –

+0

Sollte 1783 sein. –

Verwandte Themen