多个级别的指针

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

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

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

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

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

size_is