Com接口c ++结构大小限制

时间:2016-09-25 16:06:32

标签: c++ interface com

我有一个用c ++编写的服务器COM接口。现在我有一个结构数组,每个结构都有一个结构数组。所有这些阵列都有固定的大小。

 const int infosize        = 32;
 const int count           = 8;
 const int cmax            = 32;

 typedef enum cstate {
     NotValidated,
     Approved,
     Rejected,
     ValidationStateCount
 } cstate;

 typedef struct inner {
     int     type;
     char    value[ infosize ];
 } inner;

 typedef struct middle {
     int        mtype;
     cstate     state;
     char       name[ infosize ];
     inner      infoArr[ count ];
 } middle;

 typedef struct outer {
     char        model[ infosize ];
     char        cname[ infosize ];
     UINT        rcount;
     middle      cmiddle[ cmax ];
 } outer;

到目前为止,这已经很好地完善了。 然而,当我将外部结构cmax中的阵列大小增加到33时,它突然停止工作。 总结构的大小约为10 kBytes。 通过COM接口传输的结构的大小是否有限制?

代码是

STDMETHODIMP Server::GetInformation( outer* compInfo, ResCode* result )
{
    if ( result == nullptr )
    {
        return E_POINTER;
    }

    *result = GetInformation( compInfo );
    return S_OK;
}

我是否需要CComSafeArray才能将我的结构放入?

0 个答案:

没有答案