ref 属性

[ref] 属性は、参照ポインターを識別します。 これは、単に間接参照のレベルを表すために使用されます。

pointer_default(ref)

typedef [ ref [[ , type-attribute-list ]] ] type-specifier declarator-list; 

typedef [ struct | union ] 
{
    [ ref [[ , field-attribute-list ]] ] type-specifier declarator-list;
    ...}

[[ [ function-attribute-list ] ]] type-specifier [[ptr-decl]] function-name(
    [ ref [[ , parameter-attribute-list ]] ] type-specifier [[standard-declarator]]
    , ...);

パラメーター

type-attribute-list

型に適用される 1 つ以上の属性を指定します。 有効な型属性には 、[handle][switch_type][transmit_as]が含まれます。ポインター属性 [ref][unique]、または [ptr];および使用法属性 [context_handle][string]、および [ignore]。 複数の属性をコンマで区切ります。

type-specifier

基本型構造体共用体、または列挙型または型識別子を指定します。 オプションのストレージ仕様は 、type-specifier の前に置くことができます。

standard-declarator

識別子、ポインター宣言子、配列宣言子など、標準の C 宣言子を指定します。 詳細については、「 配列とSized-Pointer属性配列、配列と ポインター」を参照してください

declarator-list

識別子、ポインター宣言子、配列宣言子などの標準 C 宣言子を指定します。 詳細については、「 配列とSized-Pointer属性配列、配列と ポインター」を参照してくださいdeclarator-list は、コンマで区切られた 1 つ以上の宣言子で構成されます。 関数宣言子のパラメーター名識別子は省略可能です。

field-attribute-list

構造体、共用体メンバー、または関数パラメーターに適用される 0 個以上のフィールド属性を指定します。 有効なフィールド属性には、[first_is]、[last_is]、[length_is]、[max_is]、[size_is];usage 属性 [string], [ignore], and [context_handle];pointer 属性 [ref][unique]、または [ptr];union 属性 [switch_type]。 複数のフィールド属性をコンマで区切ります。

function-attribute-list

関数に適用される 0 個以上の属性を指定します。 有効な関数属性は [callback], [local];pointer 属性 [ref][unique]、または [ptr];および usage 属性 [string][ignore]、および [context_handle]

ptr-decl

[ref] 属性が適用されるポインター宣言子を少なくとも 1 つ指定します。 ポインター宣言子は、C で使用されるポインター宣言子と同じです。これは、 * 指定子、 far などの修飾子、および修飾子 const から構築 されます

function-name

リモート プロシージャの名前を指定します。

parameter-attribute-list

指定したパラメーター型に適した 0 個以上の属性で構成されます。 パラメーター属性は、方向属性 [in][out] を受け取ることができます。フィールド属性 [first_is]、[last_is]、[length_is]、[max_is]、[size_is]および [switch_type];pointer 属性 [ref][unique]、または [ptr];と 使用法属性 [context_handle][string]。 usage 属性 [ignore] を パラメーター属性として使用することはできません。 複数の属性をコンマで区切ります。

解説

ポインター属性は、構造体メンバー、共用体メンバー、またはパラメーターに適用されるフィールド属性として、型属性として適用できます。または、関数の戻り値の型に適用される関数属性として。 ポインター属性は、[pointer_default] キーワード (keyword)と共に表示することもできます。

参照ポインターには、次の特性があります。

  • 常に有効なストレージを指します。値が NULL になることはありません。 参照ポインターは常に逆参照できます。
  • 呼び出し中に変更されることはありません。 参照ポインターは、呼び出しの前後に常にクライアント上の同じストレージを指します。
  • クライアントに新しいメモリを割り当てません。 サーバーから返されたデータは、呼び出しの前に参照ポインターの値で指定された既存のストレージに書き込まれます。
  • エイリアシングは発生しません。 参照ポインターが指すストレージは、関数内の他の名前からは到達できません。

参照ポインターは、関数によって返されるポインターの型として使用できません。

最上位のポインター パラメーターに属性が指定されていない場合は、参照ポインターとして扱われます。

[unique] char * GetFirstName( 
    [in, ref] char * pszFullName);

関連項目

配列

配列とポインター

配列とSized-Pointer属性

MIDL 基本型

コールバック (callback)

const

context_handle

Enum

first_is

処理

無視

last_is

length_is

地元の

max_is

Ptr

size_is

文字列

構造 体

switch_type

transmit_as

連合

unique