次の方法で共有


参照ポインター

参照ポインターは最も単純なポインターであり、クライアント スタブによる最小限の処理が必要です。 クライアント プログラムが参照ポインターをリモート プロシージャに渡すと、参照ポインターには常に有効なメモリ ブロックのアドレスが含まれます。 リモート プロシージャが完了しても、同じメモリ ブロックが指し示されます。 これらのポインターは、主に参照セマンティクスを実装し、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 パラメーターを、文字の配列ではなく、1 つの文字へのポインターとして定義します。 サーバー ルーチン RemoteFn がデータを格納するメモリを指す [out] パラメーターと参照ポインターです。