2008-09-15 9 views
4

서버 2008을 평가하고 있습니다.이 C++ 실행 파일에 오류가 발생했습니다. MSDN에서이 오류를 보았습니다.이 오류는 이전의 여러 운영 체제에 대한 핫픽스를 필요로했던 것으로 보입니다. 이걸 본 사람? 32 & 64 비트 OS에서도 같은 결과가 나타납니다.Windows Server 2008 : COM 오류 : 0x800706F7 - 스텁에 잘못된 데이터가 수신되었습니다.

코드 스 니펫 :

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

이것은 일반 컴퓨팅 질문 사이트가 아닙니다. 이것은 프로그래밍 질문입니다. – GEOCHET

+0

OP에 오류가 발생하여 질문이 유효하다고 생각합니다. 그러나 더 자세한 내용이 도움이 될 것입니다 : 어떤 작업이 오류를 생성합니까? 산발적이고 반복적입니까? –

답변

2

우리는 클라이언트와 최근 같은 오류로 실행하십시오 GroupDataArray VARIANT 인수가 DCAPICOM_GroupData 구조체 항목을 포장 변종의 단일 차원 SAFEARRAY를 래핑

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

/DCOM을 통해 통신하는 서버 응용 프로그램. 와이어를 통해 마샬링 된 인터페이스 포인터 (즉, 로컬이 아닌)의 크기가 변경되었습니다 (커짐). CoMarshalInterface 등을 통해 코드가 특별한 마샬링을 수행하고 있는지 확인할 수 있습니다.

+0

마샬링을 사용하지 않고 로컬에서만 실행하므로이 사항이 적용되지 않습니다. – creohornet

3

Microsoft에서 지원 사례를 연 후에 이제 내 자신의 질문에 대답 할 수 있습니다. 이것은 (현재) 버그입니다. 이 문제는 서버 측에서 마샬링 할 때 발생하지만 서버 코드가 호출되기 전에 발생합니다. 우리의 구조는 6 바이트이지만이 COM 구현은이를 8로 해석하므로 마샬링이 실패하고 이것이 다시 발생하는 오류입니다. 이 문제를 해결하기 위해 서비스 팩이 릴리스 될 때까지 해결 방법은 두 개의 추가 바이트를 구조에 추가하여 최대 8 바이트를 채 웁니다. 아직 실패한 인스턴스는 더 이상 실행되지 않지만 여전히 많은 테스트가 있습니다.

+2

안녕하세요, 버그 ID는 무엇입니까? –

+0

1783이어야합니다. –