文字列属性

[string] 属性は、1 次元の charwchar_tバイト (または同等の) 配列、またはこのような配列へのポインターを文字列として扱う必要があることを示します。 文字列には、フィールドがすべて バイト型であるコンストラクトの配列 (または配列へのポインター) を指定することもできます。

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

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

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

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

パラメーター

type-attribute-list

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

type-specifier

基本型構造体型、または型識別子を指定します。 省略可能なストレージ仕様は 、型指定子の前に置くことができます。

standard-declarator

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

declarator-list

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

field-attribute-list

構造体、共用体メンバー、または関数パラメーターに適用される 0 個以上のフィールド属性を指定します。 2 つの有効なフィールド属性は [max_is][size_is]です。使用法属性 [string][ignore]、および [context_handle]、ポインター属性 [ref][unique]、または [ptr]、union 属性 [switch_type]。 複数のフィールド属性をコンマで区切ります。

function-attribute-list

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

ptr-decl

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

function-name

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

parameter-attribute-list

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

解説

実行時に境界が決定される配列で [string] 属性を使用する場合は、次の例のように 、[size_is] または [max_is] 属性も指定する必要があります。

/* a string that can hold up to MAX_STRING_LENGTH characters */
typedef [string, max_is(MAX_STRING_LENGTH)] char line[];

[string] 属性は、[first_is]、[last_is]、[length_is] など、送信される要素の範囲を指定する属性では使用できません

多次元配列で使用する場合、[ string] 属性は右端の配列に適用されます。

カウントされる文字列を定義するには、[ string] 属性を使用しないでください。 次のような文字配列または文字ベースのポインターを使用します。

typedef struct 
{ 
    unsigned short size; 
    unsigned short length; 
    [size_is(size), length_is(length)] char string[*]; 
} counted_string;

[string] 属性は、スタブで言語指定のメソッドを使用して文字列の長さを決定することを指定します。

C で文字列を宣言する場合は、文字列の末尾をマークする余分な文字にスペースを割り当てる必要があります。

/* a string type that can hold up to 80 characters */ 
typedef [string] char line[81]; 
 
HRESULT Proc1([in, string] char * pszName);

関連項目

配列

MIDL 基本型

コールバック (callback)

Char

const

context_handle

Enum

first_is

処理

インターフェイス定義 (IDL) ファイル

無視

last_is

length_is

地元の

max_is

pointer_default

Ptr

参考

size_is

構造 体

switch_type

transmit_as

連合

一意

wchar_t