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