2014-03-25 6 views
0

Microsoft RPC 구조를 준수하는 배열을 통과해야합니다. 이것은 내가 IDL에서 그것을 작성하는 방법입니다 :헤더에 적합한 배열로 IDL 구조체를 변환하십시오.

struct BarStruct 
{ 
    byte a; 
    int b; 
    byte c; 
long lArraySize; 
[size_is(lArraySize)] char achArray[*]; 
}; 

생성 된 헤더 : achArray 1의 고정 길이가 왜

struct BarStruct 
    { 
    byte a; 
    int b; 
    byte c; 
    long lArraySize; 
    char achArray[ 1 ]; 
    } ; 

? 예를 들어 10 개의 요소가있는 배열을 전달하는 방법은 무엇입니까? 이 같은

답변

0

뭔가 :

BarStruct* p = (BarStruct*)CoTaskMemAlloc(
    offsetof(BarStruct, achArray) + 10*sizeof(char)); 

는 기본적으로, 구조가 마지막에 achArray[10] 회원 것처럼 메모리를 할당해야합니다. offsetof(BarStruct, achArray)은 구조의 고정 된 부분의 크기를 제공합니다. 최대 값은 achArray까지입니다. 여기에 배열의 가변 크기를 추가합니다.

관련 문제