嵌入式Out-Only引用指针

在 Microsoft RPC 中使用 [out]-only 引用指针时,生成的服务器存根仅分配可从引用指针访问的第一级指针。 更深层的指针不由存根分配,但必须由服务器应用程序层分配。 例如,假设接口指定引用指针的 [out]-only 数组:

/* IDL file (fragment) */
typedef [ref] short * PREF;

Proc1([out] PREF array[10]);

在此示例中,服务器存根为 10 个指针分配内存,并将每个指针的值设置为 null。 服务器应用程序必须为指针引用的 10 个短 整数分配内存,然后将 10 个指针设置为指向整数。

当 [out]-only 数据结构包含嵌套引用指针时,服务器存根将仅分配可从引用指针访问的第一个指针。 例如:

/* IDL file (fragment) */
typedef struct 
{
    [ref] small * psValue;
} STRUCT1_TYPE;

typedef struct 
{
    [ref] STRUCT1_TYPE * ps1;
} STRUCT_TOP_TYPE;

Proc2([out, ref] STRUCT_TOP_TYPE * psTop);

在前面的示例中,服务器存根分配指针 psTop结构STRUCT_TOP_TYPESTRUCT_TOP_TYPE 中的引用指针 ps1 设置为 null。 服务器存根不会分配数据结构的每个级别,也不会分配 STRUCT1_TYPE 或其嵌入的指针 psValue