引用指针

引用指针是最简单的指针,需要客户端存根处理量最少。 当客户端程序将引用指针传递给远程过程时,引用指针始终包含有效内存块的地址。 远程过程完成后,它仍将指向同一内存块。 这些指针主要用于实现引用语义,并允许使用 C 中的 [out] 参数。

在以下示例中,指针的值在调用期间不会更改,但指针指示的地址处的数据内容可能会更改。

静态引用指针地址处的数据更改

引用指针具有以下特征:

  • 它始终指向有效的存储,并且从不具有 NULL 值。
  • 它在调用期间永远不会更改,并且始终指向调用前后的同一存储。
  • 从远程过程返回的数据将写入现有存储。
  • 引用指针指向的存储不能由函数中的任何其他指针或任何其他名称访问。

使用 [ref] 属性在接口定义中指定引用指针,如以下示例所示。

/* IDL file */
[ 
  uuid(ba209999-0c6c-11d2-97cf-00c04f8eea45),
  version(1.0)
]
interface RefPtrInterface
{
  void RemoteFn([in, out, ref] char *pChar);
}

此示例将参数 pChar 定义为指向单个字符而不是字符数组的指针。 它是一个 [out] 参数和引用指针,指向服务器例程 RemoteFn 将使用数据填充的内存。