関数パラメーターおよび戻り値の注釈設定
ここでは、バッファー内の構造体とクラスおよびほとんどの種類に単純な機能のスカラー パラメーターのコメントの一般的な使用方法、およびポインターについて説明します。この記事では、コメントの一般的な使用パターンを示します。関数に関連する追加コメントでは、関数の動作に注釈を付けるを参照してください。
ポインターのパラメーター
次の表にコメントを記述する場合は、ポインター パラメーターが指定されている場合、アナライザーは、ポインターが null の場合にエラーを報告します。これは、ポインターが指すすべてのデータ項目に適用されます。
注釈 |
説明 |
---|---|
_In_ |
スカラーなど、構造体、構造体へのポインターである入力パラメーターを指定します。明示的には、スカラーで使用される場合があります。パラメーターは、前の状態で有効である必要があり、変更されません。 |
_Out_ |
スカラーなど、構造体、構造体へのポインターである出力パラメーターを指定します。例の値を返すことができないオブジェクト値渡しスカラーこれには適用されません。パラメーターは、前の状態で有効である必要はよろしくなかったり後の状態で有効である必要があります。 |
_Inout_ |
関数によって変更されるパラメーターを指定します。前の状態と後置状態の両方で有効である必要がありますが、の呼び出し前後に異なる値を持つことを前提としています。変更可能な値に適用する必要があります。 |
_In_z_ |
入力として使用される NULL で終わる文字列へのポインター。文字列には、前の状態で有効である必要があります。既に正しいコメントがある PSTRのバリアントに適しています。 |
_Inout_z_ |
変更される NULL で終わる文字配列へのポインター。これには、値が変化すると仮定した後に有効にする必要があります。null の実行元の null 終端文字までの要素しかアクセスできないことがあります。 |
_In_reads_(s) _In_reads_bytes_(s) |
関数によって読み取られる配列へのポインター。配列は有効である必要があるサイズの s 内の要素です。 _bytes_ のバリアントではなく要素のサイズをバイト単位で指定します。サイズが要素として表現できない場合にのみ機能を使用します。たとえば、char の文字列は wchar_t を使用しても同様の関数が _bytes_ 場合にのみのバリエーションを使用します。 |
_In_reads_z_(s) |
null で終わるできる既知のサイズを持つ配列へのポインター。null 値が存在しない場合、null 終端記号または s までの要素は、状態で有効な終端なります。サイズがバイト単位でしている場合は、要素のサイズによってスケール s。 |
_In_reads_or_z_(s) |
null で終わるか、既知のサイズを持つ配列へのポインター、または両方。null 値が存在しない場合、null 終端記号または s までの要素は、状態で有効な終端なります。サイズがバイト単位でしている場合は、要素のサイズによってスケール s。(strn ファミリのために使用)。 |
_Out_writes_(s) _Out_writes_bytes_(s) |
s の要素 (resp の配列へのポインター。関数によって作成されたバイト単位)。配列要素は前の状態で有効でなく、POST 状態で有効な要素数は指定されていません。パラメーターの場合はコメントの後の状態で適用されます入力します。次に例を示します。
この例では、呼び出し元は p1に size の要素のバッファーを提供します。MyStringCopy は、要素の一部を有効にします。さらに重要な、PWSTR の _Null_terminated_ のコメントは p1 後で状態が null で終わることを意味します。このように、有効な要素の数は、正しく定義されていますが、特定の要素の計算は必要ではありません。 _bytes_ のバリアントではなく要素のサイズをバイト単位で指定します。サイズが要素として表現できない場合にのみ機能を使用します。たとえば、char の文字列は wchar_t を使用しても同様の関数が _bytes_ 場合にのみのバリエーションを使用します。 |
_Out_writes_z_(s) |
s 要素の配列へのポインター。要素は、状態で有効である必要はありません。後で状態は、要素は終端文字を指定する null で現在有効になります。サイズがバイト単位でしている場合は、要素のサイズによってスケール s。 |
_Inout_updates_(s) _Inout_updates_bytes_(s) |
両方で関数に読み取って記述された配列へのポインター。これは、サイズの s の要素、前の状態と後置状態で有効です。 _bytes_ のバリアントではなく要素のサイズをバイト単位で指定します。サイズが要素として表現できない場合にのみ機能を使用します。たとえば、char の文字列は wchar_t を使用しても同様の関数が _bytes_ 場合にのみのバリエーションを使用します。 |
_Inout_updates_z_(s) |
null で終わるできる既知のサイズを持つ配列へのポインター。要素は、の終端 null で事前条件と後置状態の両方で現在有効になります。後の状態の値は、前の状態の値と異なる;推論されます これは、null 終端文字の位置が含まれています。サイズがバイト単位でしている場合は、要素のサイズによってスケール s。 |
_Out_writes_to_(s,c) _Out_writes_bytes_to_(s,c) _Out_writes_all_(s) _Out_writes_bytes_all_(s) |
s 要素の配列へのポインター。要素は、状態で有効である必要はありません。後で、c状態までの要素-番目の要素は有効である必要があります。サイズがバイト単位でしている場合は、要素のサイズによってスケール s と c は、次のように定義されている _bytes_ のバリエーションを使用します:
つまり、前の状態 s までバッファーにある要素は、後の状態で使用できます。次に例を示します。
|
_Inout_updates_to_(s,c) _Inout_updates_bytes_to_(s,c) |
両方関数によって読み取られ、記述された配列へのポインター。ここでは、前の状態で有効である必要が c の要素は後の状態で有効である必要があります s のサイズの要素です。 _bytes_ のバリアントではなく要素のサイズをバイト単位で指定します。サイズが要素として表現できない場合にのみ機能を使用します。たとえば、char の文字列は wchar_t を使用しても同様の関数が _bytes_ 場合にのみのバリエーションを使用します。 |
_Inout_updates_all_(s) _Inout_updates_bytes_all_(s) |
両方のサイズ s の要素の関数によって読み取られ、記述された配列へのポインター。と等価で定義された:
つまり、前の状態 s までバッファーにある要素は、状態と後置状態で有効です。 _bytes_ のバリアントではなく要素のサイズをバイト単位で指定します。サイズが要素として表現できない場合にのみ機能を使用します。たとえば、char の文字列は wchar_t を使用しても同様の関数が _bytes_ 場合にのみのバリエーションを使用します。 |
_In_reads_to_ptr_(p) |
式 p – _Curr_ (つまり、_Curr_減算 p) が適切な言語標準で定義された配列へのポインター。p 前の要素は、状態で有効である必要があります。 |
_In_reads_to_ptr_z_(p) |
式 p – _Curr_ (つまり、_Curr_減算 p) が適切な言語の標準で定義される null で終わる配列へのポインター。p 前の要素は、状態で有効である必要があります。 |
_Out_writes_to_ptr_(p) |
式 p – _Curr_ (つまり、_Curr_減算 p) が適切な言語標準で定義された配列へのポインター。p 前の要素は、状態で有効でなく、POST 状態で有効である必要があります。 |
_Out_writes_to_ptr_z_(p) |
式 p – _Curr_ (つまり、_Curr_減算 p) が適切な言語の標準で定義される null で終わる配列へのポインター。p 前の要素は、状態で有効でなく、POST 状態で有効である必要があります。 |
省略可能なポインター パラメーター
ポインター パラメーターのコメントは _opt_が含まれる場合、パラメーターが null である可能性があることを示します。それ以外の場合、コメントは _opt_を含まないバージョンと同じを実行します。ポインター パラメーターのコメントの _opt_ のバリアントの一覧を次に示します。:
_In_opt_ _Out_opt_ _Inout_opt_ _In_opt_z_ _Inout_opt_z_ _In_reads_opt_ _In_reads_bytes_opt_ _In_reads_opt_z_ |
_Out_writes_opt_ _Out_writes_opt_z_ _Inout_updates_opt_ _Inout_updates_bytes_opt_ _Inout_updates_opt_z_ _Out_writes_to_opt_ _Out_writes_bytes_to_opt_ _Out_writes_all_opt_ _Out_writes_bytes_all_opt_ |
_Inout_updates_to_opt_ _Inout_updates_bytes_to_opt_ _Inout_updates_all_opt_ _Inout_updates_bytes_all_opt_ _In_reads_to_ptr_opt_ _In_reads_to_ptr_opt_z_ _Out_writes_to_ptr_opt_ _Out_writes_to_ptr_opt_z_ |
出力のポインター パラメーター
出力のポインターをパラメーターと特殊な表記がパラメーターの位置に null ness を区別するように要求します。
注釈 |
説明 |
---|---|
_Outptr_ |
パラメーターは null 以外である位置に後で状態を null にすることはできず、有効である必要があります。 |
_Outptr_opt_ |
null にする位置に後で状態を null にすることはできず、有効である必要があります。 |
_Outptr_result_maybenull_ |
パラメーターは null 以外である位置、POST 状態に null を指定できます。 |
_Outptr_opt_result_maybenull_ |
パラメーターは null の可能性が位置、POST 状態に null を指定できます。 |
次の表では、にコメントの意味を修飾するためには追加の部分文字列はコメントの名前に挿入されます。さまざまな部分文字列は _z、_COM_、_buffer_、_bytebuffer_と _to_です。
![]() |
---|
注釈が使用するインターフェイスが COM、これらのコメントの COM フォームを使用します。他の型のインターフェイスを持つ COM のコメントは使用しないでください。 |
注釈 |
説明 |
---|---|
_Outptr_result_z_ _Outptr_opt_result_z_ _Outptr_result_maybenull_z_ _Ouptr_opt_result_maybenull_z_ |
返されたポインターに _Null_terminated_ のコメントがあります。 |
_COM_Outptr_ _COM_Outptr_opt_ _COM_Outptr_result_maybenull_ _COM_Outptr_opt_result_maybenull_ |
したがって、返されたポインターが null であること、返されたポインターに COM 規則があり、_On_failure_ POST 要求を行います。 |
_Outptr_result_buffer_(s) _Outptr_result_bytebuffer_(s) _Outptr_opt_result_buffer_(s) _Outptr_opt_result_bytebuffer_(s) |
サイズの s の要素またはバイトの有効な返されたバッファーへのポインターのポインター。 |
_Outptr_result_buffer_to_(s, c) _Outptr_result_bytebuffer_to_(s, c) _Outptr_opt_result_buffer_to_(s,c) _Outptr_opt_result_bytebuffer_to_(s,c) |
最初の c が有効であるバイトまたは s の要素のサイズのバッファーを指す返されたポインターのポインター。 |
特定のインターフェイスの規則は出力パラメーターが失敗で無効になっていると仮定します。明示的に COM を除き、次の表に、フォーム コードお勧めします。COM コードでは、前のセクションで示した対応する COM の形式を使用します。
注釈 |
説明 |
---|---|
_Result_nullonfailure_ |
他のコメントを変更します。結果は無効にするには、関数が失敗した場合に設定されます。 |
_Result_zeroonfailure_ |
他のコメントを変更します。結果は、関数が失敗した場合はゼロに設定されます。 |
_Outptr_result_nullonfailure_ |
関数が失敗した場合は、関数が成功した場合は有効なバッファーを指す返されたポインターの位置、または null。ここでは、省略可能なパラメーターがあります。 |
_Outptr_opt_result_nullonfailure_ |
関数が失敗した場合は、関数が成功した場合は有効なバッファーを指す返されたポインターの位置、または null。ここでは、省略可能なパラメーターに対してです。 |
_Outref_result_nullonfailure_ |
関数が失敗した場合は、関数が成功した場合は有効なバッファーを指す返されたポインターの位置、または null。ここでは、参照パラメーター用です。 |
出力参照パラメーター
参照パラメーターのは一般的に、出力パラメーター用です。パラメーター例の単純な出力参照のため、int&—_Out_ は、正しいセマンティクスを提供します。ただし _Outptr_ int ** が正しいセマンティクスを提供しないように、出力値を int *&例—同等のポインターのコメントのポインターである場合。簡単にポインター型の出力パラメーター参照セマンティクスを表現するには、次の複合コメントの使用:
注釈 |
説明 |
---|---|
_Outref_ |
結果は後の状態で有効である必要があり、null にすることはできません。 |
_Outref_result_maybenull_ |
結果は後の状態で有効である必要があります。後で状態が null である可能性があります。 |
_Outref_result_buffer_(s) |
結果は後の状態で有効である必要があり、null にすることはできません。サイズの s の要素の有効なバッファーへのポインター。 |
_Outref_result_bytebuffer_(s) |
結果は後の状態で有効である必要があり、null にすることはできません。サイズの s バイトの有効なバッファーへのポインター。 |
_Outref_result_buffer_to_(s, c) |
結果は後の状態で有効である必要があり、null にすることはできません。最初の c が有効である s の要素のバッファーへのポインター。 |
_Outref_result_bytebuffer_to_(s, c) |
結果は後の状態で有効である必要があり、null にすることはできません。最初の c が有効である s バイトのバッファーへのポインター。 |
_Outref_result_buffer_all_(s) |
結果は後の状態で有効である必要があり、null にすることはできません。サイズの s の有効な要素の有効なバッファーへのポインター。 |
_Outref_result_bytebuffer_all_(s) |
結果は後の状態で有効である必要があり、null にすることはできません。有効な要素に s バイトの有効なバッファーへのポインター。 |
_Outref_result_buffer_maybenull_(s) |
結果は後の状態で有効である必要があります。後で状態が null である可能性があります。サイズの s の要素の有効なバッファーへのポインター。 |
_Outref_result_bytebuffer_maybenull_(s) |
結果は後の状態で有効である必要があります。後で状態が null である可能性があります。サイズの s バイトの有効なバッファーへのポインター。 |
_Outref_result_buffer_to_maybenull_(s, c) |
結果は後の状態で有効である必要があります。後で状態が null である可能性があります。最初の c が有効である s の要素のバッファーへのポインター。 |
_Outref_result_bytebuffer_to_maybenull_(s,c) |
結果は後の状態で有効である必要があります。後の状態で null である可能性があります。最初の c が有効である s バイトのバッファーへのポインター。 |
_Outref_result_buffer_all_maybenull_(s) |
結果は後の状態で有効である必要があります。後の状態で null である可能性があります。サイズの s の有効な要素の有効なバッファーへのポインター。 |
_Outref_result_bytebuffer_all_maybenull_(s) |
結果は後の状態で有効である必要があります。後の状態で null である可能性があります。有効な要素に s バイトの有効なバッファーへのポインター。 |
戻り値
関数の戻り値は _Out_ のパラメーターに似ていますが、逆参照のレベルにあり、結果へのポインターの概念を考慮する必要はありません。次のコメントでは、戻り値は構造体へ注釈先オブジェクトのスカラー、ポインター、またはバッファーへのポインターです。これらのコメントに _Out_ の対応するコメントと同じセマンティクスがあります。
_Ret_z_ _Ret_writes_(s) _Ret_writes_bytes_(s) _Ret_writes_z_(s) _Ret_writes_to_(s,c) _Ret_writes_maybenull_(s) _Ret_writes_to_maybenull_(s) _Ret_writes_maybenull_z_(s) |
_Ret_maybenull_ _Ret_maybenull_z_ _Ret_null_ _Ret_notnull_ _Ret_writes_bytes_to_ _Ret_writes_bytes_maybenull_ _Ret_writes_bytes_to_maybenull_ |
そのほかのコメント
注釈 |
説明 |
---|---|
_In_range_(low, hi) _Out_range_(low, hi) _Ret_range_(low, hi) _Deref_in_range_(low, hi) _Deref_out_range_(low, hi) _Deref_inout_range_(low, hi) _Field_range_(low, hi) |
パラメーター、フィールド、または結果は low から hiでスコープ内に (包括) です。適切な状態前または後の状態の状態とともに指定されたオブジェクトに適用される _Satisfies_(_Curr_ >= low && _Curr_ <= hi) に相当します。 ![]()
名前が" および "" の "含まれていますが、_In_ のセマンティクスと _Out_ は、これらのコメントには適用されません。
|
_Pre_equal_to_(expr) _Post_equal_to_(expr) |
注釈付きの値は、exprです。適切な状態前または後の状態の状態とともに指定されたオブジェクトに適用される _Satisfies_(_Curr_ == expr) に相当します。 |
_Struct_size_bytes_(size) |
構造体またはクラスの申告に適用されます。その型の有効なオブジェクトが宣言された型よりも大きい場合があります sizeで指定されたバイト数とことを示します。次に例を示します。
型 MyStruct * のパラメーター pM バイトのバッファー サイズは次のように記述するために取得されます:
|