2008-09-15 16 views
4

Sunucu 2008'i değerlendiriyorum. C++ yürütülebilir dosyam bu hatayı alıyor. Bu hatayı, önceki birkaç işletim sistemi için bir düzeltme gerektirdiği görülen MSDN'de gördüm. Bunu başka gören var mı? 32 & 64 bit işletim sistemi için aynı sonuçları elde ediyorum.Windows Server 2008: COM hatası: 0x800706F7 - Saplama hatalı veri aldı

Kod pasajı:

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

Bu gerçekten bir Genel Bilgi işlem soru sitesi değildir. Bu programlama soruları içindir. – GEOCHET

+0

Sorunun geçerli olduğuna inanıyorum, çünkü OP'nin programı hataya dönüşüyor. Ancak daha fazla ayrıntı yararlı olacaktır: hatayı hangi işlem yapıyor? Sporadik mi, tekrarlanabilir mi? –

cevap

2

Biz bir müşteri ile yakın zamanda aynı hataya koştu: GroupDataArray VARIANT bağımsız değişkeni bir DCAPICOM_GroupData yapı girdileri sarma türevlerini tek boyutlu SAFEARRAY'ini sarar

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

/sunucu uygulaması DCOM üzerinden iletişim kuruyor. Tel boyunca (yani yerel olmayan) giden bir sıralı arayüz işaretçisinin boyutunun değiştiği (daha büyük kazanılmış) olduğu ortaya çıktı. Kodunuzun CoMarshalInterface veya benzeri yoluyla özel bir marshalling yapıp yapmadığını kontrol etmek isteyebilirsiniz.

+0

Yalnızca yerel olarak çalışıyoruz ve marshalling kullanmıyoruz, bu yüzden bu bize uygulanmıyor. – creohornet

3

Microsoft ile bir destek vakası açtıktan sonra, şimdi kendi sorumu yanıtlayabilirim. Bu (şimdi) tanınmış bir hatasıdır. Sorun, sunucu tarafında sıralı ve sunucu kodu çağrılmadan önce yapılmalıdır. Yapımız 6 bayt uzunluğunda, ancak bu COM uygulaması bunu 8 olarak yorumluyor, bu yüzden sıralama başarısız oluyor ve geri dönüşünüz budur. Çözüm, bununla başa çıkmak için bir Hizmet Paketi yayımlanana kadar, 8 bayta kadar doldurmak için yapıya iki tane fazla bayt eklemektir. Henüz başarısız olan başka örneklerle karşılaşmadık, ancak hala yapacak çok testimiz var.

+2

Merhaba, hata kimliği nedir? –

+0

1783 olmalıdır. –