多个指针级别
当有多个级别的指针时,这些属性与最接近变量名称的指针相关联。 客户端仍负责分配与响应关联的任何内存。
以下示例允许存根调用服务器,而无需事先知道将返回多少数据:
[
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 对象的数组。
相关主题