多个指针级别

当有多个级别的指针时,这些属性与最接近变量名称的指针相关联。 客户端仍负责分配与响应关联的任何内存。

以下示例允许存根调用服务器,而无需事先知道将返回多少数据:

[
    uuid( ...),
    version(3.3),
]
interface AnInterface
{
    HRESULT GetBars([out] long * pSize,
             [out, size_is( , *pSize)]
             BAR ** ppBar);//BAR type defined elsewhere
}

在此示例中,存根传递服务器的唯一指针,服务器初始化为 NULL。 然后,服务器分配一个 BAR 块,设置指针,设置大小参数并返回。 请注意,为了使服务器对调用方产生影响,必须将 [ref] 指针传递给 [唯一的] 指针,以指向数据。 另请注意 [size_is(, *pSize )]中的逗号,指示顶级指针不是大小指针,而是较低级别的指针。

在客户端上,存根在调用远程过程之前将 *ppBar 设置为 NULL。 然后,存根会分配并取消对 BAR 对象的欠款。 size 参数指示块的大小(以及未分配的 BAR 的数量)。 当不再需要 BAR 对象时,客户端必须释放返回的 BAR 对象的数组。

size_is