次の方法で共有


参照ポインター

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