2014-03-25 33 views
0

我需要通過帶有符合數組的Microsoft RPC結構傳遞。這是我寫的IDL:將帶符合數組的IDL結構轉換爲標頭

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

生成的頭:

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

爲什麼achArray爲1固定長度?如何將數組傳遞給例如10個元素?

回答

0

事情是這樣的:

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

基本上,你需要分配內存,就好像結構在年底有achArray[10]成員。 offsetof(BarStruct, achArray)給你的結構的固定部分的大小,但不包括achArray。爲此,您添加可變大小的數組。