引用指针

引用指针是最简单的指针,需要客户端存根处理量最少。 当客户端程序将引用指针传递给远程过程时,引用指针始终包含有效内存块的地址。 当远程过程完成时,它仍将指向相同的内存块。 这些指针主要用于实现引用语义,并允许在 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 将填充数据的内存的引用指针。